Hello World探究
Hello World探究
1、POM文件
1、父項(xiàng)目
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version> </parent>他的父項(xiàng)目是 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>1.5.9.RELEASE</version><relativePath>../../spring-boot-dependencies</relativePath> </parent> 他來真正管理Spring Boot應(yīng)用里面的所有依賴版本;Spring Boot的版本仲裁中心;
以后我們導(dǎo)入依賴默認(rèn)是不需要寫版本;(沒有在dependencies里面管理的依賴自然需要聲明版本號(hào))
2、啟動(dòng)器
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>spring-boot-starter-==web==:
? spring-boot-starter:spring-boot場景啟動(dòng)器? ??幫我們導(dǎo)入了web模塊正常運(yùn)行所依賴的組件;
Spring Boot將所有的功能場景都抽取出來,做成一個(gè)個(gè)的starters(啟動(dòng)器),只需要在項(xiàng)目里面引入這些starter相關(guān)場景的所有依賴都會(huì)導(dǎo)入進(jìn)來。要用什么功能就導(dǎo)入什么場景的啟動(dòng)器
主程序類,主入口類
/*** @SpringBootApplication 來標(biāo)注一個(gè)主程序類,說明這是一個(gè)Spring Boot應(yīng)用*/ @SpringBootApplication public class HelloWorldMainApplication {public static void main(String[] args) {// Spring應(yīng)用啟動(dòng)起來SpringApplication.run(HelloWorldMainApplication.class,args);} }@SpringBootApplication: Spring Boot應(yīng)用標(biāo)注在某個(gè)類上說明這個(gè)類是SpringBoot的主配置類,SpringBoot就應(yīng)該運(yùn)行這個(gè)類的main方法來啟動(dòng)SpringBoot應(yīng)用;
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = {@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public @interface SpringBootApplication {
@SpringBootConfiguration??Spring Boot的配置類;
? 標(biāo)注在某個(gè)類上,表示這是一個(gè)Spring Boot的配置類;
? @Configuration??配置類上來標(biāo)注這個(gè)注解;
? 配置類 ----- 配置文件;配置類也是容器中的一個(gè)組件;@Component
@EnableAutoConfiguration:開啟自動(dòng)配置功能;
? 以前我們需要配置的東西,Spring Boot幫我們自動(dòng)配置;@EnableAutoConfiguration告訴SpringBoot開啟自動(dòng)配置功能;這樣自動(dòng)配置才能生效;
@AutoConfigurationPackage @Import(EnableAutoConfigurationImportSelector.class) public @interface EnableAutoConfiguration {
@AutoConfigurationPackage:自動(dòng)配置包
? @Import(AutoConfigurationPackages.Registrar.class):
? Spring的底層注解@Import,給容器中導(dǎo)入一個(gè)組件;導(dǎo)入的組件由AutoConfigurationPackages.Registrar.class;
==將主配置類(@SpringBootApplication標(biāo)注的類)的所在包及下面所有子包里面的所有組件掃描到Spring容器;==
? @Import(EnableAutoConfigurationImportSelector.class);
? 給容器中導(dǎo)入組件?
? EnableAutoConfigurationImportSelector:導(dǎo)入哪些組件的選擇器;
? 將所有需要導(dǎo)入的組件以全類名的方式返回;這些組件就會(huì)被添加到容器中;
? 會(huì)給容器中導(dǎo)入非常多的自動(dòng)配置類(xxxAutoConfiguration);就是給容器中導(dǎo)入這個(gè)場景需要的所有組件,并配置好這些組件;
有了自動(dòng)配置類,免去了我們手動(dòng)編寫配置注入功能組件等的工作;
? SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);
Spring Boot在啟動(dòng)的時(shí)候從類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的值,將這些值作為自動(dòng)配置類導(dǎo)入到容器中,自動(dòng)配置類就生效,幫我們進(jìn)行自動(dòng)配置工作;==以前我們需要自己配置的東西,自動(dòng)配置類都幫我們;
J2EE的整體整合解決方案和自動(dòng)配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar;
?
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Hello World探究的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot的第一个入门程序
- 下一篇: 单例模式在JDK 应用的源码分析||单例