@SpringBootApplication注解
Spring Boot項目有一個入口類 (*Application) 在這個類中有一個main 方法,是運行該項目的切入點。而@SpringBootApplication 注解就是作用在這個啟動類上面的,它是Spring Boot 的核心注解,經過查看源碼后,發現它其實是一個組合注解。
1 @Target(ElementType.TYPE) 2 @Retention(RetentionPolicy.RUNTIME) 3 @Documented 4 @Inherited 5 @SpringBootConfiguration 6 @EnableAutoConfiguration 7 @ComponentScan(excludeFilters = { 8 @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), 9 @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) 10 public @interface SpringBootApplication {
@SpringBootConfiguration:這是Spring Boot的配置注解,也是一個組合注解,與@Configuration作用相同,標識這是一個被裝載的Bean,在Spring Boot項目中推薦使用 @SpringBootConfiguration替代@Configuration。
1 @Target({ElementType.TYPE}) 2 @Retention(RetentionPolicy.RUNTIME) 3 @Documented 4 @Configuration 5 public @interface SpringBootConfiguration { 6 }
@EnableAutoConfiguration:啟用自動配置的注解,使用它之后,Spring Boot會根據項目中依賴的jar包自動配置項目的配置項,比如:添加了spring-boot-starter-web的依賴,項目中也就會引入SpringMVC的依賴,並且Spring Boot會自動配置tomcat 和SpringMVC。
@ComponentScan:默認掃描@SpringBootApplication所在類的同級目錄以及它的子目錄,excludeFilters:指定不適合組件掃描的類型。
關閉自動配置
Spring Boot會根據項目中的jar包依賴,自動做出配置,Spring Boot支持的自動配置非常多,致使它的初始化時間比較長,因此為了避免不必要的耗時,可以將一些和第三方組件的自動集成和配置關閉。比如不想自動配置Redis:
@SpringBootApplication(exclude = {RedisAutoConfiguration.class})
自定義Banner
在啟動Spring Boot 項目的時候在控制台上會輸出一個SPRING 的圖案。可以通過banner文件自定義這個圖案,同時也可以關閉這個輸出圖案。
自定義Banner~ 可以通過這個鏈接就可以自定義想要輸出的圖案,然后把自定義的圖案拷貝到一個文件,將該文件命名為banner.txt 放到resources 目錄中重啟即可看到自定義的圖案。
當然也可以關閉控制台輸出團案:修改main 方法中的代碼:
public static void main(String[] args) { //SpringApplication.run(SpringbootTestApplication.class, args);
SpringApplication application = new SpringApplication(SpringbootTestApplication.class); application.setBannerMode(Banner.Mode.OFF); application.run(args); }
Spring Boot 核心配置文件
Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。
application 配置文件主要用於 Spring Boot 項目的自動化配置。
bootstrap 配置文件有以下幾個應用場景。
- 使用 Spring Cloud Config 配置中心時,這時需要在 bootstrap 配置文件中添加連接到配置中心的配置屬性來加載外部配置中心的配置信息;
- 一些固定的不能被覆蓋的屬性;
- 一些加密/解密的場景;
而配置文件又有兩種格式:.properties 和 .yaml,它們的區別主要是書寫格式不同。
.properties:
spring.datasource.username=root
.yaml:
spring: datasource: username: root
另外,.yaml 格式不支持 @PropertySource
注解導入配置。
導入XML配置文件
SpringBoot提倡零配置,它已經為我們做了很多的配置,但是如果在相關的項目中仍然需要xml 文件做一些額外的配置,別擔心,Spring Boot 也是支持的。可以在入口類通過@ImportResource
進行xml 配置文件的導入並且支持對多個xml 文件的配置。
@ImportResource({"classpath:*.xml","classpath:**.xml"})