1. 程式人生 > 實用技巧 >Springboot自動配置

Springboot自動配置

分析springboot的啟動類:研究下 @SpringBootApplication 註解

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

@SpringBootApplication 原始碼: 紅框中的是重點註解

1.@SpringBootConfiguration

在這個註解上面,又有一個@Configuration註解
這個註解的作用就是聲明當前類是一個配置類
然後Spring會自動掃描到添加了@Configuration的類
讀取其中的配置資訊
而@SpringBootConfiguration是來聲明當前類是SpringBoot應用的配置類,專案中只能有一個。所以一般我們無需自己新增。

2.@EnableAutoConfiguration

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
    Class
<?>[] exclude() default {}; String[] excludeName() default {}; }

開啟自動配置
告訴SpringBoot基於所新增的依賴,去“猜測”你想要如何配置Spring。
比如我們引入了spring-boot-starter-web,而這個啟動器中幫我們添加了tomcat、SpringMVC的依賴
此時自動配置就知道你是要開發一個web應用,所以就幫你完成了web及SpringMVC的預設配置了!
SpringBoot內部對大量的第三方庫或Spring內部庫進行了預設配置
這些配置是否生效,取決於我們是否引入了對應庫所需的依賴
如果有那麼預設配置就會生效
我們使用SpringBoot構建一個專案,只需要引入所需框架的依賴,配置就可以交給SpringBoot處理了

3.@ComponentScan

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Repeatable(ComponentScans.class)
public @interface ComponentScan {

...
}

配置元件掃描的指令
提供了類似與<context:component-scan>標籤的作用
通過basePackageClasses或者basePackages屬性來指定要掃描的包。
如果沒有指定這些屬性,那麼將從宣告這個註解的類所在的包開始,掃描包及子包
而我們的@SpringBootApplication註解宣告的類就是main函式所在的啟動類,
因此掃描的包是該類所在包及其子包。因此,一般啟動類會放在一個比較前的包目錄中。