本文主要寫了下Spring Boot的一些經常使用配置。java
入口類:web
Spring Boot一般有一個名爲*Application的入口類,入口類裏面有一個main方法,這個main方法其實就是一個標準的Java應用的入口方法。在main方法中使用SpringApplication.run(*Application.class, args),啓動Spring Boot應用項目。spring
@SpringBootApplication:安全
@SpringBootApplication是Spring Boot的核心註解,它是一個組合註解,源碼以下:app
1 // 2 // Source code recreated from a .class file by IntelliJ IDEA 3 // (powered by Fernflower decompiler) 4 // 5 6 package org.springframework.boot.autoconfigure; 7 8 import java.lang.annotation.Documented; 9 import java.lang.annotation.ElementType; 10 import java.lang.annotation.Inherited; 11 import java.lang.annotation.Retention; 12 import java.lang.annotation.RetentionPolicy; 13 import java.lang.annotation.Target; 14 import org.springframework.context.annotation.ComponentScan; 15 import org.springframework.context.annotation.Configuration; 16 17 @Target({ElementType.TYPE}) 18 @Retention(RetentionPolicy.RUNTIME) 19 @Documented 20 @Inherited 21 @Configuration 22 @EnableAutoConfiguration 23 @ComponentScan 24 public @interface SpringBootApplication { 25 Class<?>[] exclude() default {}; 26 27 String[] excludeName() default {}; 28 }
@SpringBootApplication註解主要組合了@Configuration、@EnableAutoConfiguration、@ComponentScan;若不使用@SpringBootApplication註解,則能夠在入口類上直接使用@Configuration、@EnableAutoConfiguration、@ComponentScan。框架
其中,@EnableAutoConfiguration讓Spring Boot根據類路徑中的jar包依賴爲當前項目進行自動配置。例如,添加了spring-boot-starter-web依賴,會自動添加Tomcat和Spring MVC的依賴,那麼Spring Boot會對Tomcat和Spring MVC進行自動配置。ide
Spring Boot會自動掃描@SpringBootApplication所在類的同級包以及下級包裏的Bean。建議入口類放置的位置在groupId+arctifactID組合的包名下。spring-boot
關閉特定的自動配置:ui
經過上面的@SpringBootApplication的源碼能夠看出,關閉特定的自動配置應該使用@SpringBootApplication註解的exclude參數,例如:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})。this
Banner:
Banner是Spring Boot啓動時候顯示的一個啓動圖案,咱們能夠修改或關閉它。
修改Banner:
在scr/main/resources下新建一個banner.txt便可,裏面寫上你想要的圖案。(注:能夠去http://patorjk.com/software/taag/生成一個)。
關閉Banner:
1 //關閉Banner有兩種方式,都是修改main裏面的內容。 2 //1: 3 new SpringApplicationBuilder(Ch623Application.class).showBanner(false).run(args); 4 //2: 5 SpringApplication springApplication = new SpringApplication(Ch623Application.class); 6 springApplication.setShowBanner(false); 7 springApplication.run(args);
Spring Boot的配置文件:
Spring Boot使用一個全局的配置文件application.properties或application.yml,放置在src/main/resources目錄或者類路徑的/config下。
Spring Boot不只支持常規的properties配置文件,還支持yaml語言的配置文件。yaml是以數據爲中心的語言,在配置數據的時候具備面向對象的特徵。
Spring Boot的全局配置文件的做用是對一些默認配置的配置值進行修改。
例:修改Tomcat的默認端口號,並將默認的訪問路徑「/」修改成「/helloboot」,就能夠在配置文件中加上下面的代碼。
server.port=9090
server.CONTEXT_PATH=/helloboot
starter pom:
Spring Boot爲咱們提供了簡化企業級開發絕大多數場景的starter pom,只要使用了應用場景所須要的starter pom,相關的技術配置將會消除,就能夠獲得Spring Boot爲咱們提供的自動配置的Bean。
能夠去Spring Boot官網找到其提供了哪些starter pom。
使用xml配置:
Spring Boot提倡零配置,即無xml配置,可是在實際項目中,可能有一些特殊要求你必須使用xml配置,這時咱們能夠經過Spring提供的@ImportResource來加載xml配置。
例:@ImportResource({"classpath:som-context.xml","classpath:another-context.xml"})
Spring Boot除了上面的配置外,還容許使用properties文件、yaml文件或者命令行參數做爲外部配置。
命令行參數配置:
Spring Boot能夠是基於jar包運行的,打成jar包的程序能夠直接經過命令運行:java -jar xx.jar。
能夠經過命令修改Tomcat端口號:java -jar xx.jar --server.port=9090。
常規屬性配置:
在Spring中,能夠經過注入properties文件裏的值的方式,並使用@PropertySource指明properties文件的位置,而後經過@Value註解注入值。
在Spring Boot裏,咱們只須要在application.properties定義屬性,直接使用@Value注入便可。
例如:
1 //application.properties中寫下以下代碼 2 //book.author=gaof 3 //book.name=spring boot 4 //而後注入。 5 @Value("${book.author}") 6 private String bookAuthor; 7 @Value("${book.name}") 8 private String bookName;
類型安全的配置(基於properties):
上面使用@Value注入每一個配置在實際項目中會顯得格外麻煩,由於咱們的配置一般會是許多個,若使用上面的方式則要使用@Value注入不少次。
Spring Boot還提供了基於類型安全的配置方式,經過@ConfigurationProperties將properties屬性和一個Bean及其屬性關聯,從而實現類型安全的配置。
例如:
1 package com.wisely.ch6_2_3.config; 2 3 import org.springframework.boot.context.properties.ConfigurationProperties; 4 import org.springframework.stereotype.Component; 5 6 /** 7 * 在application.properties中寫下以下代碼 8 * author.name=gaof 9 * author.age=32 10 * 而後使用@ConfigurationProperties註解的prefix指定properties裏面配置的 前綴。 11 * 12 * 若需指定其餘的配置文件,則需添加屬性locations。 13 */ 14 @Component 15 @ConfigurationProperties(prefix = "author") 16 //@ConfigurationProperties(prefix = "author", locations = {"classpath:config/author.properties"}) 17 public class AuthorSettings { 18 private String name; 19 private Long age; 20 21 public String getName() { 22 return name; 23 } 24 25 public void setName(String name) { 26 this.name = name; 27 } 28 29 public Long getAge() { 30 return age; 31 } 32 33 public void setAge(Long age) { 34 this.age = age; 35 } 36 }
注:使用了類型安全配置的類在別的類中使用時須在類上面加上@EnableConfigurationProperties聲明,開啓屬性注入。
Spring Boot支持Java Util Logging、Log4J、Log4J2和Logback做爲日誌框架,不管使用哪一種日誌框架,Spring Boot都已爲當前使用日誌框架的控制檯輸出及文件輸出作好了配置。
默認狀況下,Spring Boot使用Logback做爲日誌框架。
配置日誌級別:logging.level.org.springframework.web = DEBUG;格式:logging.level.包名=級別。
配置日誌文件:logging.file=D:/mylog/log.log。
Profile是Spring用來針對不一樣的環境對不一樣的配置提供支持的,全局Profile配置使用application-{profile}.properties。
經過在application.properties中設置spring.profiles.active=prod來指定活動的Profile。
例如: