1. 程式人生 > 其它 >4.本地配置—有了和泥工具

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

優先順序(由高到低):

  1. args
  2. file:./config/*/application
  3. file:./config/application
  4. file:./application
  5. class:/config/application
  6. 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