1.@SpringBootApplication注解
springboot是基于spring的新型的輕量級框架,最厲害的地方當屬**自動配置。**那我們就可以根據(jù)啟動流程和相關(guān)原理來看看,如何實現(xiàn)傳奇的自動配置
@SpringBootApplication//標注在某個類上,表示這個類是SpringBoot的啟動類
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
從上面代碼可以看出,Annotation定義(@SpringBootApplication)和類定義(SpringApplication.run)最為耀眼,所以要揭開SpringBoot的神秘面紗,我們要從這兩位開始就可以了。
@SpringBootConfiguration//表示當前類是一個IoC容器的配置類
@EnableAutoConfiguration //開啟SpringBoot自動裝配功能
@ComponentScan(excludeFilters = {// 掃描路徑設(shè)置
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes =AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
...
}
2.@SpringBootConfiguration注解
包括了@Configuration,配合@Bean代替xml配置文件的形式注入bean:
a)xml配置文件的形式注入bean
<bean id="mockService" class="..MockServiceImpl">
...
</bean>
b)注解配置形式注入bean
@Configuration
public class MockConfiguration{
/*
*任何一個標注了@Bean的方法,其返回值將作為一個bean定義注冊到Spring的IoC容器,方法名將默認成該
*bean定義的id。
*/
@Bean
public MockService mockService(){
return new MockServiceImpl();
}
}
?
3.@EnableAutoConfiguration注解
@EnableAutoConfiguration:開啟SpringBoot自動裝配功能
@AutoConfigurationPackage//controller、service----->IOC容器
@Import(EnableAutoConfigurationImportSelector.class)//自動配置
public @interface EnableAutoConfiguration {
...
}
3.1.@AutoConfigurationPackage注解
@Import(AutoConfigurationPackages.Registrar.class)
public @interface AutoConfigurationPackage {
}
AutoConfigurationPackages.Registrar.class將啟動類(@SpringBootApplication標注的類)的所在包及子包里面所有組件掃描到Spring容器;
3.2.@Import注解
EnableAutoConfigurationImportSelector讀取META-INF/spring.factories的值,將這些值作為配置類加載到IOC容器中,幫助我們進行自動配置工作。文章來源:http://www.zghlxwxcb.cn/news/detail-804639.html
4.@ComponentScan
我們可以通過basePackages等屬性來細粒度的定制@ComponentScan自動掃描的范圍,如果不指定,則默認Spring框架實現(xiàn)會從@ComponentScan所在類的package進行掃描。文章來源地址http://www.zghlxwxcb.cn/news/detail-804639.html
到了這里,關(guān)于Spring Boot自動配置原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!