SpringBoot配置
Spring Boot 使用一個全局的配置文件 application.properties 或application.yml,放置在src/main/resources目錄或者類路徑/config下(yaml語言的配置文件application.yml,yaml是以數據爲中心的語言,在配置數據的時候具有面向對象的特徵。)
這裏,以application.properties爲主。
application.properties作用:對一些默認配置的配置值進行修改。
例:
1、將Tomcat的默認端口號8080修改爲9090
2、 默認路徑”/”修改爲”/helloboot”。
SpringBoot常用的配置等需要某個模塊時,做相應的配置。
SpringBoot爲我們提供了簡化企業級開發絕大多數場景的starter pom,只要使用了應用場景所需要的starter pom,相關的技術配置就會消除,就可以得到Spring Boot爲我們提供的自動配置的Bean。
常見的starter pom(針對不同的場景,使用不同的starter pom 進行自動配置。):
常規屬性配置:
常規spring環境: 1、@PropertySource指明properties文件的位置 2、通過@Value注入值
spring boot環境:1、在application.properties定義屬性 2、直接使用@Vaue注入
(節省了@PropertySource指定這一步,因爲spring boot默認指定的配置文件就是application.properties)
實例:
1、在application.properties配置文件中定義屬性:
2、在你的controller層使用@Value()註解
3、最後寫測試方法,檢查是否成功注入:
類型安全配置(基於properties):
使用@Value注入每個配置在實際項目中會顯得格外麻煩,因爲我們的配置通常會是許多個,如果使用普通屬性注入,則要使用@Value注入很多次。
基於這個需求,Spring Boot提供了基於類型安全的配置方式,通過@ConfigurationProperties將properties屬性和一個Bean及其屬性關聯,從而實現類型安全的配置。
例子:
1、在application.properties配置文件中指定屬性
2、先是通過@Component聲明這個實體類是一個Bean
之後通過@ConfigurationProperties加載properties文件內的配置,通過prefix屬性指定properties的配置的前綴,通過locations指定properties文件的位置(這裏沒使用到)。
3、通過@Autowired注入相應的實體類
4、打印相應信息(因爲application.properties配置文件中定義的屬性已經通過類型安全配置配置到Author對象中{@ConfigurationProperties},所以只要通過Author對象調用裏面的屬性,就可以取值)
日誌配置:
Spring Boot 支持Java Util Logging、Log4J、Log4J2和Logback作爲日誌框架。
無論使用哪種框架,Spring Boot已爲當前使用日誌框架的控制檯輸出及文件輸出做好了配置。
默認情況下,Spring Boot使用Logback作爲日誌框架。
例子:
logging.file=路徑(設置日誌文件存放在那個路徑下)
logging.level.org.springframework.web = DEBUG(配置日誌文件,格式爲logging.level.包名 = 級別)
SpringBoot啓動時就會把DEBUG級別以上的信息全都打印出來(只是啓動時相關信息)。
Profile配置:
Profile是Spring用來針對不同的環境對不同的配置提供支持的。
全局Profile配置使用application-{profile}.properties(如application-prod.properties)
通過在application.properties中設置spring.profile.active = prod來指定活動的profile。
例子:
1、新建配置文件application-dev.properties
2、在application-dev.properties配置文件中指定服務端口爲8888(測試)
3、新建配置文件application-prod.properties
4、在application-prod.properties配置文件中指定服務端口爲80(測試)
5、當我們在application.properties通過spring.profile.active = prod指定活動的profile是application-prod.properties,此時服務端口是80。
6、當我們在application.properties通過spring.profile.active = dev指定活動的profile是application-dev.properties,此時服務端口是8888。