最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot集成高德地圖SDK的詳細步驟

 更新時間:2026年01月26日 09:31:50   作者:悟空碼字  
這篇文章主要介紹了高德地圖的基本功能、服務優(yōu)勢和應用場景,以及如何在SpringBoot項目中集成高德地圖SDK的詳細步驟,總結了集成要點,包括技術架構優(yōu)勢、配置靈活、性能優(yōu)化、異常處理和安全性考慮,并提供了最佳實踐建議和注意事項,需要的朋友可以參考下

一、高德地圖簡介

1.1 高德地圖概述

高德地圖是中國領先的數(shù)字地圖內容、導航和位置服務解決方案提供商,由阿里巴巴集團控股。它提供了全面的地圖服務,包括:

  • 基礎地圖服務:街道、建筑物、地形等地圖數(shù)據(jù)
  • 定位服務:GPS、基站、Wi-Fi多重定位
  • 地理編碼:地址與坐標之間的相互轉換
  • 路徑規(guī)劃:駕車、步行、騎行、公交路線規(guī)劃
  • 地圖展示:2D/3D地圖展示、自定義地圖樣式
  • 地點搜索:POI(興趣點)搜索、周邊搜索
  • 軌跡服務:車輛軌跡管理和分析

1.2 高德地圖服務優(yōu)勢

  • 高精度定位:米級到厘米級精確定位
  • 豐富API:提供Web端、Android、iOS、服務端全方位SDK
  • 實時路況:覆蓋全國主要城市的實時交通信息
  • 數(shù)據(jù)更新快:地圖數(shù)據(jù)每周更新

1.3 高德地圖應用場景

  • 位置服務(LBS)應用
  • 物流配送和路徑優(yōu)化
  • 出行服務和導航應用
  • 地理信息系統(tǒng)(GIS)
  • 商業(yè)分析和選址決策

二、SpringBoot集成高德地圖SDK詳細步驟

2.1 環(huán)境準備

2.1.1 注冊高德開發(fā)者賬號

  1. 訪問高德開放平臺
  2. 注冊賬號并完成實名認證
  3. 創(chuàng)建應用,獲取API Key

2.1.2 創(chuàng)建SpringBoot項目

# 使用Spring Initializr創(chuàng)建項目
mvn archetype:generate -DgroupId=com.example -DartifactId=amap-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

# 或使用Spring Boot CLI
spring init --dependencies=web,configuration-processor amap-demo

2.2 項目依賴配置

pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.0</version>
        <relativePath/>
    </parent>

    <groupId>com.example</groupId>
    <artifactId>amap-demo</artifactId>
    <version>1.0.0</version>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <!-- Spring Boot Web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
        <!-- Spring Boot Configuration Processor -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        
        <!-- Lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        
        <!-- HTTP Client -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>
        
        <!-- JSON Processing -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        
        <!-- Test Dependencies -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2.3 配置文件

application.yml

server:
  port: 8080
  servlet:
    context-path: /api

spring:
  application:
    name: amap-service

# 高德地圖配置
amap:
  # 在高德開放平臺申請的key
  api-key: your-amap-api-key-here
  # API基礎URL
  base-url: https://restapi.amap.com/v3
  # 地理編碼服務路徑
  geocode-path: /geocode/geo
  # 逆地理編碼服務路徑
  regeocode-path: /geocode/regeo
  # 路徑規(guī)劃服務路徑
  direction-path: /direction/driving
  # IP定位服務路徑
  ip-locate-path: /ip
  # 天氣查詢服務路徑
  weather-path: /weather/weatherInfo
  # 簽名密鑰(可選)
  sig-key: 
  # 返回數(shù)據(jù)格式
  output: JSON

2.4 核心代碼實現(xiàn)

2.4.1 配置類

package com.example.amap.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Data
@Configuration
@ConfigurationProperties(prefix = "amap")
public class AmapProperties {
    private String apiKey;
    private String baseUrl;
    private String geocodePath;
    private String regeocodePath;
    private String directionPath;
    private String ipLocatePath;
    private String weatherPath;
    private String sigKey;
    private String output = "JSON";
    
    public String getGeocodeUrl() {
        return baseUrl + geocodePath;
    }
    
    public String getRegeocodeUrl() {
        return baseUrl + regeocodePath;
    }
    
    public String getDirectionUrl() {
        return baseUrl + directionPath;
    }
    
    public String getIpLocateUrl() {
        return baseUrl + ipLocatePath;
    }
    
    public String getWeatherUrl() {
        return baseUrl + weatherPath;
    }
}

2.4.2 HTTP客戶端配置

package com.example.amap.config;

import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

@Configuration
public class HttpClientConfig {
    
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate(httpRequestFactory());
    }
    
    @Bean
    public ClientHttpRequestFactory httpRequestFactory() {
        return new HttpComponentsClientHttpRequestFactory(httpClient());
    }
    
    @Bean
    public CloseableHttpClient httpClient() {
        PoolingHttpClientConnectionManager connectionManager = 
            new PoolingHttpClientConnectionManager();
        connectionManager.setMaxTotal(200);
        connectionManager.setDefaultMaxPerRoute(50);
        
        RequestConfig requestConfig = RequestConfig.custom()
            .setSocketTimeout(10000)
            .setConnectTimeout(5000)
            .setConnectionRequestTimeout(5000)
            .build();
        
        return HttpClientBuilder.create()
            .setConnectionManager(connectionManager)
            .setDefaultRequestConfig(requestConfig)
            .build();
    }
}

2.4.3 服務層實現(xiàn)

package com.example.amap.service;

import com.example.amap.config.AmapProperties;
import com.example.amap.model.*;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;

import java.net.URI;
import java.util.HashMap;
import java.util.Map;

@Slf4j
@Service
@RequiredArgsConstructor
public class AmapService {
    
    private final RestTemplate restTemplate;
    private final AmapProperties amapProperties;
    private final ObjectMapper objectMapper;
    
    /**
     * 地理編碼:地址轉坐標
     */
    public GeoResult geocode(String address, String city) {
        Map<String, String> params = new HashMap<>();
        params.put("key", amapProperties.getApiKey());
        params.put("address", address);
        if (city != null && !city.isEmpty()) {
            params.put("city", city);
        }
        
        String url = buildUrl(amapProperties.getGeocodeUrl(), params);
        log.info("請求地理編碼API: {}", url);
        
        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
        return parseGeoResult(response.getBody());
    }
    
    /**
     * 逆地理編碼:坐標轉地址
     */
    public RegeoResult regeocode(String location) {
        Map<String, String> params = new HashMap<>();
        params.put("key", amapProperties.getApiKey());
        params.put("location", location);
        params.put("extensions", "all"); // 返回詳細信息
        
        String url = buildUrl(amapProperties.getRegeocodeUrl(), params);
        log.info("請求逆地理編碼API: {}", url);
        
        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
        return parseRegeoResult(response.getBody());
    }
    
    /**
     * 路徑規(guī)劃
     */
    public DirectionResult direction(String origin, String destination, String strategy) {
        Map<String, String> params = new HashMap<>();
        params.put("key", amapProperties.getApiKey());
        params.put("origin", origin);
        params.put("destination", destination);
        params.put("strategy", strategy != null ? strategy : "0"); // 0:速度優(yōu)先
        
        String url = buildUrl(amapProperties.getDirectionUrl(), params);
        log.info("請求路徑規(guī)劃API: {}", url);
        
        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
        return parseDirectionResult(response.getBody());
    }
    
    /**
     * IP定位
     */
    public IpLocateResult ipLocate(String ip) {
        Map<String, String> params = new HashMap<>();
        params.put("key", amapProperties.getApiKey());
        params.put("ip", ip != null ? ip : "");
        
        String url = buildUrl(amapProperties.getIpLocateUrl(), params);
        log.info("請求IP定位API: {}", url);
        
        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
        return parseIpLocateResult(response.getBody());
    }
    
    /**
     * 天氣查詢
     */
    public WeatherResult weather(String city, String extensions) {
        Map<String, String> params = new HashMap<>();
        params.put("key", amapProperties.getApiKey());
        params.put("city", city);
        params.put("extensions", extensions != null ? extensions : "base"); // base:實時天氣
        
        String url = buildUrl(amapProperties.getWeatherUrl(), params);
        log.info("請求天氣查詢API: {}", url);
        
        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
        return parseWeatherResult(response.getBody());
    }
    
    /**
     * 構建請求URL
     */
    private String buildUrl(String baseUrl, Map<String, String> params) {
        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(baseUrl);
        params.forEach(builder::queryParam);
        return builder.build().toUriString();
    }
    
    /**
     * 解析地理編碼結果
     */
    private GeoResult parseGeoResult(String json) {
        try {
            JsonNode root = objectMapper.readTree(json);
            GeoResult result = new GeoResult();
            result.setStatus(root.get("status").asText());
            result.setInfo(root.get("info").asText());
            
            if ("1".equals(result.getStatus())) {
                JsonNode geocodes = root.get("geocodes");
                if (geocodes != null && geocodes.isArray() && geocodes.size() > 0) {
                    JsonNode first = geocodes.get(0);
                    GeoCode geoCode = new GeoCode();
                    geoCode.setFormattedAddress(first.get("formatted_address").asText());
                    geoCode.setCountry(first.get("country").asText());
                    geoCode.setProvince(first.get("province").asText());
                    geoCode.setCity(first.get("city").asText());
                    geoCode.setDistrict(first.get("district").asText());
                    String location = first.get("location").asText();
                    if (location.contains(",")) {
                        String[] coords = location.split(",");
                        geoCode.setLongitude(Double.parseDouble(coords[0]));
                        geoCode.setLatitude(Double.parseDouble(coords[1]));
                    }
                    result.setGeocode(geoCode);
                }
            }
            return result;
        } catch (Exception e) {
            log.error("解析地理編碼結果失敗", e);
            return null;
        }
    }
    
    /**
     * 解析逆地理編碼結果
     */
    private RegeoResult parseRegeoResult(String json) {
        try {
            JsonNode root = objectMapper.readTree(json);
            RegeoResult result = new RegeoResult();
            result.setStatus(root.get("status").asText());
            result.setInfo(root.get("info").asText());
            
            if ("1".equals(result.getStatus())) {
                JsonNode regeocode = root.get("regeocode");
                if (regeocode != null) {
                    RegeoCode regeoCode = new RegeoCode();
                    regeoCode.setFormattedAddress(regeocode.get("formatted_address").asText());
                    result.setRegeocode(regeoCode);
                }
            }
            return result;
        } catch (Exception e) {
            log.error("解析逆地理編碼結果失敗", e);
            return null;
        }
    }
    
    // 其他解析方法類似,限于篇幅省略...
}

2.4.4 數(shù)據(jù)模型

package com.example.amap.model;

import lombok.Data;
import java.util.List;

@Data
public class GeoResult {
    private String status;
    private String info;
    private GeoCode geocode;
}

@Data
class GeoCode {
    private String formattedAddress;
    private String country;
    private String province;
    private String city;
    private String district;
    private Double longitude;
    private Double latitude;
}

@Data
public class RegeoResult {
    private String status;
    private String info;
    private RegeoCode regeocode;
}

@Data
class RegeoCode {
    private String formattedAddress;
    private AddressComponent addressComponent;
}

@Data
class AddressComponent {
    private String province;
    private String city;
    private String district;
    private String township;
}

@Data
public class DirectionResult {
    private String status;
    private String info;
    private Route route;
}

@Data
class Route {
    private List<Path> paths;
}

@Data
class Path {
    private Double distance;
    private Double duration;
    private String strategy;
    private String tolls;
    private String restriction;
    private String trafficLights;
}

@Data
public class IpLocateResult {
    private String status;
    private String info;
    private String province;
    private String city;
    private String adcode;
    private String rectangle;
}

@Data
public class WeatherResult {
    private String status;
    private String info;
    private String count;
    private List<LiveWeather> lives;
    private List<ForecastWeather> forecasts;
}

@Data
class LiveWeather {
    private String province;
    private String city;
    private String adcode;
    private String weather;
    private String temperature;
    private String winddirection;
    private String windpower;
    private String humidity;
    private String reporttime;
}

@Data
class ForecastWeather {
    private String city;
    private String adcode;
    private String province;
    private String reporttime;
    private List<Cast> casts;
}

@Data
class Cast {
    private String date;
    private String week;
    private String dayweather;
    private String nightweather;
    private String daytemp;
    private String nighttemp;
    private String daywind;
    private String nightwind;
    private String daypower;
    private String nightpower;
}

2.4.5 控制器層

package com.example.amap.controller;

import com.example.amap.model.*;
import com.example.amap.service.AmapService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/amap")
@RequiredArgsConstructor
public class AmapController {
    
    private final AmapService amapService;
    
    /**
     * 地址轉坐標
     */
    @GetMapping("/geocode")
    public ApiResponse<GeoResult> geocode(
            @RequestParam String address,
            @RequestParam(required = false) String city) {
        GeoResult result = amapService.geocode(address, city);
        return ApiResponse.success(result);
    }
    
    /**
     * 坐標轉地址
     */
    @GetMapping("/regeocode")
    public ApiResponse<RegeoResult> regeocode(@RequestParam String location) {
        RegeoResult result = amapService.regeocode(location);
        return ApiResponse.success(result);
    }
    
    /**
     * 路徑規(guī)劃
     */
    @GetMapping("/direction")
    public ApiResponse<DirectionResult> direction(
            @RequestParam String origin,
            @RequestParam String destination,
            @RequestParam(required = false) String strategy) {
        DirectionResult result = amapService.direction(origin, destination, strategy);
        return ApiResponse.success(result);
    }
    
    /**
     * IP定位
     */
    @GetMapping("/ip-locate")
    public ApiResponse<IpLocateResult> ipLocate(@RequestParam(required = false) String ip) {
        IpLocateResult result = amapService.ipLocate(ip);
        return ApiResponse.success(result);
    }
    
    /**
     * 天氣查詢
     */
    @GetMapping("/weather")
    public ApiResponse<WeatherResult> weather(
            @RequestParam String city,
            @RequestParam(required = false) String extensions) {
        WeatherResult result = amapService.weather(city, extensions);
        return ApiResponse.success(result);
    }
}

/**
 * 統(tǒng)一API響應格式
 */
@Data
class ApiResponse<T> {
    private int code;
    private String message;
    private T data;
    private long timestamp;
    
    public static <T> ApiResponse<T> success(T data) {
        ApiResponse<T> response = new ApiResponse<>();
        response.setCode(200);
        response.setMessage("success");
        response.setData(data);
        response.setTimestamp(System.currentTimeMillis());
        return response;
    }
    
    public static <T> ApiResponse<T> error(int code, String message) {
        ApiResponse<T> response = new ApiResponse<>();
        response.setCode(code);
        response.setMessage(message);
        response.setTimestamp(System.currentTimeMillis());
        return response;
    }
}

2.4.6 全局異常處理

package com.example.amap.exception;

import com.example.amap.controller.ApiResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
    
    @ExceptionHandler(Exception.class)
    public ApiResponse<Object> handleException(Exception e) {
        log.error("系統(tǒng)異常", e);
        return ApiResponse.error(500, e.getMessage());
    }
    
    @ExceptionHandler(AmapException.class)
    public ApiResponse<Object> handleAmapException(AmapException e) {
        log.error("高德地圖服務異常", e);
        return ApiResponse.error(e.getCode(), e.getMessage());
    }
}

class AmapException extends RuntimeException {
    private int code;
    
    public AmapException(int code, String message) {
        super(message);
        this.code = code;
    }
    
    public int getCode() {
        return code;
    }
}

2.4.7 啟動類

package com.example.amap;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

@SpringBootApplication
@EnableConfigurationProperties
public class AmapApplication {
    public static void main(String[] args) {
        SpringApplication.run(AmapApplication.class, args);
    }
}

2.5 測試示例

package com.example.amap.test;

import com.example.amap.AmapApplication;
import com.example.amap.service.AmapService;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@Slf4j
@SpringBootTest(classes = AmapApplication.class)
public class AmapServiceTest {
    
    @Autowired
    private AmapService amapService;
    
    @Test
    void testGeocode() {
        var result = amapService.geocode("北京市朝陽區(qū)阜通東大街6號", "北京");
        log.info("地理編碼結果: {}", result);
    }
    
    @Test
    void testRegeocode() {
        var result = amapService.regeocode("116.481488,39.990464");
        log.info("逆地理編碼結果: {}", result);
    }
    
    @Test
    void testDirection() {
        var result = amapService.direction("116.481488,39.990464", "116.434307,39.90909", "0");
        log.info("路徑規(guī)劃結果: {}", result);
    }
}

三、詳細總結

3.1 集成要點總結

技術架構優(yōu)勢

  1. 微服務友好:通過RestTemplate封裝,易于集成到微服務架構
  2. 配置靈活:使用Spring Boot配置屬性,支持多環(huán)境配置
  3. 性能優(yōu)化:HTTP連接池配置,提高并發(fā)性能
  4. 異常處理:統(tǒng)一的異常處理機制,提高系統(tǒng)穩(wěn)定性
  5. 日志完善:完整的日志記錄,便于問題排查

安全性考慮

  1. API Key保護:配置文件中存儲,避免硬編碼
  2. 請求簽名:支持SIG參數(shù),提高接口安全性
  3. 輸入驗證:對用戶輸入進行校驗,防止非法參數(shù)
  4. 限流機制:可結合Redis實現(xiàn)API調用限流

3.2 最佳實踐建議

性能優(yōu)化

// 1. 使用緩存減少重復請求
@Cacheable(value = "geocodeCache", key = "#address + '-' + #city")
public GeoResult geocode(String address, String city) {
    // 實現(xiàn)邏輯
}

// 2. 異步調用提高響應速度
@Async
public CompletableFuture<GeoResult> geocodeAsync(String address, String city) {
    return CompletableFuture.completedFuture(geocode(address, city));
}

// 3. 批量處理接口
public List<GeoResult> batchGeocode(List<AddressRequest> requests) {
    return requests.stream()
        .map(req -> geocode(req.getAddress(), req.getCity()))
        .collect(Collectors.toList());
}

監(jiān)控與告警

// 添加監(jiān)控指標
@Component
public class AmapMetrics {
    
    private final MeterRegistry meterRegistry;
    private final Counter successCounter;
    private final Counter failureCounter;
    private final Timer apiTimer;
    
    public AmapMetrics(MeterRegistry meterRegistry) {
        this.meterRegistry = meterRegistry;
        this.successCounter = Counter.builder("amap.api.calls")
            .tag("status", "success")
            .register(meterRegistry);
        this.failureCounter = Counter.builder("amap.api.calls")
            .tag("status", "failure")
            .register(meterRegistry);
        this.apiTimer = Timer.builder("amap.api.duration")
            .register(meterRegistry);
    }
    
    public void recordSuccess(long duration) {
        successCounter.increment();
        apiTimer.record(duration, TimeUnit.MILLISECONDS);
    }
}

3.3 擴展功能

  1. 地理圍欄服務:實現(xiàn)電子圍欄監(jiān)控
  2. 軌跡分析:車輛軌跡管理和分析
  3. 熱力圖生成:基于位置數(shù)據(jù)的可視化
  4. 地址標準化:地址數(shù)據(jù)清洗和標準化
  5. 智能推薦:基于位置的商家推薦

3.4 注意事項

  1. API調用限制:注意高德地圖API的調用頻率限制
  2. 錯誤碼處理:完整處理高德地圖返回的錯誤碼
  3. 服務降級:在API服務不可用時實現(xiàn)降級策略
  4. 數(shù)據(jù)一致性:考慮數(shù)據(jù)更新和緩存的同步問題
  5. 合規(guī)性:確保應用符合國家的地理信息安全規(guī)定

3.5 部署

  1. 多環(huán)境配置:開發(fā)、測試、生產環(huán)境使用不同的API Key
  2. 密鑰輪換:定期更新API Key,提高安全性
  3. 監(jiān)控告警:設置API調用異常告警
  4. 文檔完善:編寫詳細的API使用文檔
  5. 壓力測試:上線前進行充分的壓力測試

通過以上完整的集成方案,SpringBoot應用可以高效、穩(wěn)定地集成高德地圖SDK,為業(yè)務提供豐富的位置服務功能。

以上就是SpringBoot集成高德地圖SDK的詳細步驟的詳細內容,更多關于SpringBoot集成高德地圖SDK的資料請關注腳本之家其它相關文章!

相關文章

  • Java中的record使用詳解

    Java中的record使用詳解

    record 是 Java 14 引入的一種新語法(在 Java 16 中成為正式功能),用于定義不可變的數(shù)據(jù)類,這篇文章給大家介紹Java中的record相關知識,感興趣的朋友一起看看吧
    2025-06-06
  • 詳解Spring?Bean的配置方式與實例化

    詳解Spring?Bean的配置方式與實例化

    本文主要帶大家一起學習一下Spring?Bean的配置方式與實例化,文中的示例代碼講解詳細,對我們學習Spring有一定的幫助,需要的可以參考一下
    2022-06-06
  • SpringBoot用JdbcTemplates訪問Mysql實例代碼

    SpringBoot用JdbcTemplates訪問Mysql實例代碼

    本篇文章主要介紹了SpringBoot用JdbcTemplates訪問Mysql實例代碼,非常具有實用價值,需要的朋友可以參考下
    2017-05-05
  • SpringBoot+Vue+Flowable模擬實現(xiàn)請假審批流程

    SpringBoot+Vue+Flowable模擬實現(xiàn)請假審批流程

    這篇文章主要為大家詳細介紹了如何利用SpringBoot+Vue+Flowable模擬實現(xiàn)一個請假審批流程,文中的示例代碼講解詳細,需要的可以參考一下
    2022-08-08
  • SpringBoot整合MybatisPlusGernerator實現(xiàn)逆向工程

    SpringBoot整合MybatisPlusGernerator實現(xiàn)逆向工程

    在我們寫項目的時候,我們時常會因為需要創(chuàng)建很多的項目結構而頭疼,本文主要介紹了SpringBoot整合MybatisPlusGernerator實現(xiàn)逆向工程,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • Mybatis流式查詢并實現(xiàn)將結果分批寫入文件

    Mybatis流式查詢并實現(xiàn)將結果分批寫入文件

    這篇文章主要介紹了Mybatis流式查詢并實現(xiàn)將結果分批寫入文件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 二叉樹基本操作之遞歸和非遞歸遍歷、分支節(jié)點數(shù)詳解

    二叉樹基本操作之遞歸和非遞歸遍歷、分支節(jié)點數(shù)詳解

    這篇文章主要介紹了二叉樹基本操作之遞歸和非遞歸遍歷、分支節(jié)點數(shù)詳解,二叉樹是由n(n>=0)個結點的有限集合構成,此集合或者為空集,或者由一個根結點及兩棵互不相交的左右子樹組成,并且左右子樹都是二叉樹,需要的朋友可以參考下
    2023-09-09
  • Jmeter多用戶并發(fā)壓力測試過程圖解

    Jmeter多用戶并發(fā)壓力測試過程圖解

    這篇文章主要介紹了Jmeter多用戶并發(fā)壓力測試過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Spring Cloud Gateway去掉url前綴

    Spring Cloud Gateway去掉url前綴

    這篇文章主要介紹了Spring Cloud Gateway去掉url前綴的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java對象拷貝常見面試題及應答匯總

    java對象拷貝常見面試題及應答匯總

    在本篇文章里小編給大家整理的是關于java對象拷貝常見面試題的相關內容,需要的朋友們可以學習下。
    2020-02-02

最新評論

广河县| 中牟县| 涟水县| 灵山县| 西宁市| 措勤县| 克什克腾旗| 英吉沙县| 尚义县| 临沭县| 昭平县| 普兰县| 大英县| 黎川县| 南丹县| 科技| 安仁县| 阿城市| 鄂温| 阿合奇县| 江油市| 萨嘎县| 酉阳| 莱阳市| 中方县| 崇州市| 衡阳市| 吉木乃县| 南木林县| 大悟县| 平谷区| 蓝山县| 陇西县| 海安县| 田林县| 广平县| 鹿邑县| 兰州市| 抚州市| 攀枝花市| 辽阳市|