Spring Boot 的核心設計理念是 ??"約定優于配置"??(Convention Over Configuration),旨在簡化 Spring 應用的初始搭建和開發過程。以下是需要掌握的核心基礎要點:
?一、核心機制?
?自動配置 (Auto-Configuration)??
- 通過
spring-boot-autoconfigure
自動配置 Bean - 條件注解控制:
@ConditionalOnClass
,@ConditionalOnMissingBean
等 - 查看自動配置報告:啟動時添加
--debug
參數
- 通過
?起步依賴 (Starter Dependencies)??
- 一站式引入相關技術棧(如
spring-boot-starter-web
包含 Web+Tomcat+JSON) - 避免版本沖突(由 Spring Boot 統一管理)
- 一站式引入相關技術棧(如
?二、核心注解?
?注解? | ?作用? |
---|---|
@SpringBootApplication | 復合注解:@Configuration + @ComponentScan + @EnableAutoConfiguration |
@RestController | 等價于 @Controller + @ResponseBody |
@ConfigurationProperties | 將配置文件綁定到 Java 對象(如 application.yml 中的屬性) |
@EnableConfigurationProperties | 啟用配置綁定 |
?三、配置文件?
?優先級?(從高到低):
命令行參數 > 外部配置文件 > 內部配置文件
- 內部配置文件:
application.properties
>application.yml
- 外部配置文件:Jar 包同級目錄的
/config
文件夾 > 根目錄
- 內部配置文件:
?多環境配置?
# application-dev.yml server:port: 8081 --- # application-prod.yml server:port: 80
- 激活環境:
spring.profiles.active=dev
- 激活環境:
?四、常用功能組件?
?數據訪問?
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
- 無需配置數據源:默認使用內存數據庫(H2)
- 自定義數據源:
spring.datasource.url=jdbc:mysql:///test
?Web MVC?
- 靜態資源路徑:
/static
,/public
,/resources
,/META-INF/resources
- 攔截器配置:
@Override public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new AuthInterceptor()).addPathPatterns("/api/**"); }
- 靜態資源路徑:
?事務管理?
@Transactional // 直接在 Service 層添加注解 public void updateUser(User user) {userRepository.save(user);logRepository.insertLog(user); }
?五、運維監控?
?Actuator 健康檢查?
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency>
- 暴露端點:
management.endpoints.web.exposure.include=health,info,metrics
- 訪問:
http://localhost:8080/actuator/health
- 暴露端點:
?日志配置?
# application.properties logging.level.root=INFO logging.level.com.example.service=DEBUG logging.file.name=app.log
?六、最佳實踐?
?目錄結構規范?
src/main/java└─ com.example├─ Application.java # 主啟動類├─ controller├─ service├─ repository└─ config
?全局異常處理?
@ControllerAdvice public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public ResponseEntity<String> handleException(Exception ex) {return ResponseEntity.status(500).body("服務器開小差了");} }
?熱部署技巧?
<!-- spring-boot-devtools 依賴 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency>
- 修改代碼后自動重啟(IDEA 需開啟
Build > Compiler > Build project automatically
)
- 修改代碼后自動重啟(IDEA 需開啟
?七、調試技巧?
- ?查看自動配置列表?
java -jar your-app.jar --debug
- ?Bean 依賴關系圖?
@SpringBootApplication public class Application {public static void main(String[] args) {// 啟動時打印Bean圖new SpringApplicationBuilder(Application.class).logStartupInfo(true).run(args);} }
?避坑指南?:
- 避免使用
@Autowired
注入靜態變量(使用 setter 注入) - 不要在主類中寫業務邏輯(保持為純啟動入口)
- 多環境配置務必關閉
spring.config.use-delimiter
(防止YAML解析錯誤)
?終極建議?:理解自動配置原理比死記配置更重要,遇到問題時查看
spring-boot-autoconfigure
源碼。掌握基礎后,再配合之前的"騷操作",可大幅提升開發效率!