4.本地配置—有了和泥工具
SpringBoot
註解
@Autowired (ByType 優先, 多個同類型則使用 ByName)
@Resource (ByName 優先, 未找到後使用 ByType 備選)
@Configuration
@Bean
這兩個註解的作用是替代傳統的 xml 配置檔案
@Bean 的形參會自動以 @Autowired 的方式進行注入
@Primary
@Qualifier
解決自動注入時的衝突問題, @Qualifier 的優先順序高於 @Primary, 前者是預設值的思想而後者的思想是篩選
@Import
等同於 xml 配置檔案中的 <import> 標籤, 引入 @Configuration 類
@ImportResource({"classpath:beans.xml"})
將指定 xml 配置檔案中的物件引入 IOC 容器
@ComponentScan
等同於 <context:component-scan> 標籤
----- 配置資訊
@ConfigurationProperties
被動接受 properties 中定義的變數
@Value("${properties}")
主動獲取 properties 中定義的變數
@PropertySource({"classpath:hero.properties"})
指定配置檔案, 不能使用 yml 檔案, 且優先順序低於 application.properties/yml
----- JSR-303
@Validated
宣告為需要驗證的類
@Min
@Max
@NotNull
@NotBlank
@NotEmpty
@Range
@Pattern
----- 多環境配置
@Profile
根據環境決定程式碼是否生效
----- 自動配置
@Conditional
派生註解:
@ConditionalOnJava
@ConditionalOnBean
@ConditionalOnMissingBean
配置資訊
同級目錄中 properties 的優先順序高於 yaml
優先順序(由高到低):
- args
- file:./config/*/application
- file:./config/application
- file:./application
- class:/config/application
- classpath:/applicaion
org.springframework.boot.context.config.ConfigDataEnvironment
JSR-303
validated
多環境配置
profile
spring:
profiles:
active: dev
自動配置
基於配置資訊來實現的
debug: true
檢視自動配置詳情
AOP
springboot 預設的動態代理是 cglib
可以通過 spring.aop.proxy-target-class=false 指定動態代理方式為 jdk 動態代理(基於類的自動注入需要改為基於介面的自動注入)
靜態資源路徑
優先順序 (由低到高):
/resource/public/
/resource/static/
/resource/resources/
/WEB-INF/resources/
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
等同於 spring-webmvc.xml
org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties