SpringBoot核心@SpringBootApplication使用介紹
@SpringBootApplication的使用
1. Spring Boot 的核心
1.1. 入口類和 @SpringBootApplication
Spring Boot的項目一般都會有*Application的入口類,入口類中會有main方法,這是一個標(biāo)準(zhǔn)的Java應(yīng)用程序的入口方法。
@SpringBootApplication注解是Spring Boot的核心注解,它其實是一個組合注解:

該注解主要組合了以下注解:
@SpringBootConfiguration:這是Spring Boot項目的配置注解,這也是一個組合注解:

在Spring Boot項目中推薦使用@ SpringBootConfiguration替代@Configuration
@EnableAutoConfiguration:啟用自動配置,該注解會使Spring Boot根據(jù)項目中依賴的jar包自動配置項目的配置項:
如:我們添加了spring-boot-starter-web的依賴,項目中也就會引入SpringMVC的依賴,Spring Boot就會自動配置tomcat和SpringMVC

@ComponentScan:默認掃描@SpringBootApplication所在類的同級目錄以及它的子目錄。
1.2 關(guān)閉自動配置
通過上述,我們得知,Spring Boot會根據(jù)項目中的jar包依賴,自動做出配置,Spring Boot支持的自動配置如下(非常多):
如果我們不需要Spring Boot自動配置,想關(guān)閉某一項的自動配置,該如何設(shè)置呢?
比如: 我們不想自動配置 Redis ,想手動配置。
當(dāng)然了,其他的配置就類似了
@SpringBootApplication及pom講解
@SpringBootApplication 主要有以下注解組成
@SpringBootConfiguration @EnableAutoConfiguration
@SpringBootConfiguration
Spring Boot 配置類, 它本質(zhì)上是@Configuration
@Configuration配置類注解,它本質(zhì)上是一個組件@Component
@Configuration
public @interface SpringBootConfiguration {
@Component
public @interface Configuration {@EnableAutoConfiguration 開啟自動配置功能
有了這個注解,以前我們需要自己配置的東西,現(xiàn)在都交由spring boot配置
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {1. @AutoConfigurationPackage
@Import({Registrar.class})
public @interface AutoConfigurationPackage {在Registrar–>registerBeanDefinitions–>AutoConfigurationPackages.register中,如下圖:
獲得@SpringBootApplication 標(biāo)注類的包名,并把該包下的所有組件掃描到spring容器中(在registerBeanDefinition中將對象放到beanDefinition中)

2. @Import({AutoConfigurationImportSelector.class})
Spring Boot啟動時從META-INF/spring.factories文件中獲取EnableAutoConfiguration所指定的值,將這些值作為自動配置類導(dǎo)入容器中,自動配置類就生效,幫我們進行自動配置工作。

Spring啟動器
spring-boot-starter-parent–>依賴于spring-boot-dependencies
Spring 的版本管理中心,我們導(dǎo)入的包默認不需要寫版本(如果沒在dependencies里管理的需要注明版本)
? ? <parent> ? ? ? ? <groupId>org.springframework.boot</groupId> ? ? ? ? <artifactId>spring-boot-starter-parent</artifactId> ? ? ? ? <version>2.2.2.RELEASE</version> ? ? ? ? <relativePath/> <!-- lookup parent from repository --> ? ? </parent>
? <parent> ? ? <groupId>org.springframework.boot</groupId> ? ? <artifactId>spring-boot-dependencies</artifactId> ? ? <version>2.2.2.RELEASE</version> ? ? <relativePath>../../spring-boot-dependencies</relativePath> ? </parent>

SpringBoot 場景啟動器
SpringBoot將所有的功能場景都抽取出來,做成Starters, 只需要在項目里引入這些starter, 相關(guān)依賴都會導(dǎo)進來。要用什么功能就導(dǎo)入什么場景的starter。
<!-- spring boot幫我們導(dǎo)入web模塊正常運行所依賴的組件: jason, spring-webmvc, spring-web等-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot 2.x基礎(chǔ)教程之配置元數(shù)據(jù)的應(yīng)用
這篇文章主要介紹了Spring Boot 2.x基礎(chǔ)教程之配置元數(shù)據(jù)的應(yīng)用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
Java實現(xiàn)注冊登錄與郵箱發(fā)送賬號驗證激活功能
這篇文章主要介紹了Java實現(xiàn)注冊登錄與郵箱發(fā)送賬號驗證激活功能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-12-12
SpringBoot整合RabbitMQ實現(xiàn)六種工作模式的示例
這篇文章主要介紹了SpringBoot整合RabbitMQ實現(xiàn)六種工作模式,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
Java語言描述存儲結(jié)構(gòu)與鄰接矩陣代碼示例
這篇文章主要介紹了Java語言描述存儲結(jié)構(gòu)與鄰接矩陣代碼示例,涉及Java存儲結(jié)構(gòu),鄰接矩陣,鄰接表的介紹與比較,然后分享了鄰接矩陣的Java實現(xiàn)等相關(guān)內(nèi)容,具有一定借鑒價值,需要的朋友可以參考。2017-11-11

