摘要:如刪除臨時文件,清除緩存信息,讀取配置文件信息,數據庫連接等。提供的接口也可以滿足該業務場景。不同點中方法的參數為,而接口中方法的參數為數組。
spring-boot-starter-parent
Maven的用戶可以通過繼承spring-boot-starter-parent項目來獲得一些合理的默認配置。這個parent提供了以下特性:
默認使用Java 8
使用UTF-8編碼
一個引用管理的功能,在dependencies里的部分配置可以不用填寫version信息,這些version信息會從spring-boot-dependencies里得到繼承。
識別過來資源過濾(Sensible resource filtering.)
識別插件的配置(Sensible plugin configuration (exec plugin, surefire, Git commit ID, shade).)
能夠識別application.properties和application.yml類型的文件,同時也能支持profile-specific類型的文件(如: application-foo.properties and application-foo.yml,這個功能可以更好的配置不同生產環境下的配置文件)。
maven把默認的占位符${…?}改為了@..@(這點大家還是看下原文自己理解下吧,我個人用的也比較少
since the default config files accept Spring style placeholders (${…?}) the Maven filtering is changed to use @..@ placeholders (you can override that with a Maven property resource.delimiter).)
啟動器包含一些相應的依賴項, 以及自動配置等.
Auto-configurationSpring Boot 支持基于Java的配置, 盡管可以將 SpringApplication 與 xml 一起使用, 但是還是建議使用 @Configuration.
可以通過 @Import 注解導入其他配置類, 也可以通過 @ImportResource 注解加載XML配置文件.
Spring Boot 自動配置嘗試根據您添加的jar依賴項自動配置Spring應用程序. 例如, 如果項目中引入 HSQLDB jar, 并且沒有手動配置任何數據庫連接的bean, 則Spring Boot會自動配置內存數據庫.
您需要將 @EnableAutoConfiguration 或 @SpringBootApplication 其中一個注解添加到您的 @Configuration 類中, 從而選擇進入自動配置.禁用自動配置
import org.springframework.boot.autoconfigure.*; import org.springframework.boot.autoconfigure.jdbc.*; import org.springframework.context.annotation.*; @Configuration @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class MyConfiguration { }
如果該類不在classpath中, 你可以使用該注解的excludeName屬性, 并指定全限定名來達到相同效果. 最后, 你可以通過 spring.autoconfigure.exclude 屬性 exclude 多個自動配置項(一個自動配置項集合)
@ComponentScanSpringBoot在寫啟動類的時候如果不使用 @ComponentScan 指明對象掃描范圍, 默認指掃描當前啟動類所在的包里的對象.
@SpringBootApplication@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters={@ComponentScan.Filter(type=CUSTOM,classes=TypeExcludeFilter.class),}) public @interface SpringBootApplication
使用 @SpringBootApplication 注解相當于使用了下面三個注解.
@EnableAutoConfiguration: 啟用 Spring Boot 的自動配置.
@ComponentScan: 對應用程序所在的包啟用 @Component 掃描.
@Configuration: 允許在上下文中注冊額外的bean或導入其他配置類.
應用服務啟動時,加載一些數據和執行一些應用的初始化動作。如:刪除臨時文件,清除緩存信息,讀取配置文件信息,數據庫連接等。
1、SpringBoot提供了CommandLineRunner接口。當有該接口多個實現類時,提供了@order注解實現自定義執行順序,也可以實現Ordered接口來自定義順序。
注意:數字越小,優先級越高,也就是@Order(1)注解的類會在@Order(2)注解的類之前執行。
import com.example.studySpringBoot.service.MyMethorClassService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @Component @Order(value=1) public class SpringDataInit implements CommandLineRunner { @Autowired private MyMethorClassService myMethorClassService; @Override public void run(String... strings) throws Exception { int result = myMethorClassService.add(8, 56); System.out.println("----------SpringDataInit1---------"+result); } }
2、SpringBoot提供的ApplicationRunner接口也可以滿足該業務場景。不同點:ApplicationRunner中run方法的參數為ApplicationArguments,而CommandLineRunner接口中run方法的參數為String數組。想要更詳細地獲取命令行參數,那就使用ApplicationRunner接口
import com.example.studySpringBoot.service.MyMethorClassService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.Ordered; import org.springframework.stereotype.Component; @Component public class SpringDataInit3 implements ApplicationRunner,Ordered { @Autowired private MyMethorClassService myMethorClassService; @Override public void run(ApplicationArguments applicationArguments) throws Exception { int result = myMethorClassService.add(10, 82); System.out.println("----------SpringDataInit3---------"+result); } @Override public int getOrder() { return 3; } }外部化配置
Spring Boot允許你外部化你的配置,這樣你就可以在不同的環境中使用相同的應用程序代碼,你可以使用 properties 文件、YAML文件、環境變量和命令行參數來外部化配置,屬性值可以通過使用 @Value 注解直接注入到你的bean中,通過Spring的 Environment 抽象訪問,或者通過 @ConfigurationProperties 綁定到結構化對象。
@ConfigurationProperties("spring.datasource.username")
Spring Boot使用一種非常特殊的 PropertySource 命令, 該命令旨在允許對值進行合理的覆蓋, 屬性按以下順序考慮:
Devtools全局設置屬性在你的主目錄( ~/.spring-boot-devtools.properties 當devtools處于激活狀態時。
測試中的 @TestPropertySource 注解
測試中的 @SpringBootTest#properties 注解屬性
命令行參數
來自 SPRING_APPLICATION_JSON(嵌入在環境變量或系統屬性中的內聯JSON)的屬性
ServletConfig 初始化參數
ServletContext 初始化參數
java:comp/env 中的JNDI屬性
Java系統屬性(System.getProperties())
操作系統環境變量
一個只有random.*屬性的RandomValuePropertySource
在你的jar包之外的特殊配置文件的應用程序屬性(application-{profile}.properties 和YAML 變體)
在jar中打包的特殊配置文件的應用程序屬性(application-{profile}.properties 和YAML 變體)
在你的jar包之外的應用程序屬性(application.properties 和YAML 變體)
打包在jar中的應用程序屬性(application.properties 和YAML 變體)
@PropertySource 注解在你的 @Configuration 類上
默認屬性(通過設置 SpringApplication.setDefaultProperties 指定)
訪問命令行屬性在默認情況下, SpringApplication 會轉換任何命令行選項參數 (也就是說,參數從 -- 開始, 像 --server.port=9000) 到一個 property, 并將它們添加到Spring Environment 中, 如前所述, 命令行屬性總是優先于其他屬性源.
如果不希望將命令行屬性添加到 Environment 中, 你可以使用 SpringApplication.setAddCommandLineProperties(false) 禁用它們.
應用程序屬性文件SpringApplication 在以下位置從 application.properties 文件加載屬性并將它們添加到Spring Environment :
當前目錄子目錄的 /config
當前目錄
類路徑下 /config 包
類路徑的根目錄
列表按優先順序排序(在列表中較高的位置定義的屬性覆蓋在較低位置定義的屬性).
特殊配置文件的屬性我們可能在不同環境下使用不同的配置, 這些配置有可能是在同一個文件中或不同文件中.
1.在相同文件中
##################################### Determime which configuration be used spring: profiles: active: "dev" # Mysql connection configuration(share) datasource: platform: "mysql" driverClassName: "com.mysql.cj.jdbc.Driver" max-active: 50 max-idle: 6 min-idle: 2 initial-size: 6 --- ##################################### for dev environment spring: profiles: "dev" datasource: # mysql connection user(dev) username: "root" # mysql connection password(dev) password: "r9DjsniiG;>7" --- ##################################### for product environment spring: profiles: "product" datasource: # mysql connection user(product) username: "root" # mysql connection password(product) password: "root" --- ##################################### for test environment spring: profiles: "test" datasource: # mysql connection user(test) username: "root" # mysql connection password(test) password: "root"
這樣在配置完相同屬性的時, 還可以對不同的環境進行不同的配置.
2.多個配置文件.
我們可以把特定環境的配置, 放入多個配置文件中, 但是要按照 application-{profile}.properties 格式. 如下圖.
spring.profiles.active 屬性進行設置.
我們也可以把配置文件放在 jar 外面, 使用 spring.config.location 屬性進行設置.
java -jar beetltest-0.0.1-SNAPSHOT.jar -spring.config.location=classpath:/application.properties
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/77445.html
摘要:和的區別,本想問下要不要深入的講下源碼級別,結果面試官說不用了。來分鐘不到,就再次打電話過來約了明早上午點的視頻面試。 出去面試的話還是得好好準備,不然會被虐的有點慘! 有贊(框架組) 四月份面試有贊的時候,自己還在實習,所以也沒有復習,是在 Boss 直聘上投的,當時看到了有贊的 2018 屆春招,就投了下,然后不知道怎么就被推到了框架組,結果后面就感覺自己被虐的可慘了。 關注我 s...
摘要:近期在開發中遇到一個問題就是用插件畫餅圖時圖例是橫向排布的時候如果換行了如何讓圖例圖標對齊由于網上關于這個的處理方案具體實現細節的解答比較少所以寫出來問題展示圖如下如圖所示第二行的圖例并沒有和第一行的圖例對齊這是因為插件在圖例橫向排列的時候 近期,在開發中遇到一個問題,就是用echarts插件畫餅圖時,圖例是橫向排布的時候,如果換行了,如何讓圖例圖標對齊?由于網上關于這個的處理方案具體...
摘要:作者重慶森林鏈接來源??途W整個三月份通過??途W和網友分享的經驗學到了很多東西,現在反饋一下我的面試經歷,希望對同學們有幫助。個人情況大三本方向渣碩,經過實驗室學長內推,于三月底完成面試。校招是實力和運氣的結合,缺一不可。 歡迎關注我的微信公眾號:Java面試通關手冊(堅持原創,分享美文,分享各種Java學習資源,面試題,以及企業級Java實戰項目回復關鍵字免費領取):showImg(h...
摘要:你如何理解中的可以理解為啟動器,它包含了一系列可以集成到應用里面的依賴包,你可以一站式集成及其他技術,而不需要到處找示例代碼和依賴包。如你想使用訪問數據庫,只要加入啟動器依賴就能使用了。 面試了一些人,簡歷上都說自己熟悉 Spring Boot, 或者說正在學習 Spring Boot,一問他們時,都只停留在簡單的使用階段,很多東西都不清楚,也讓我對面試者大失所望。 下面,我給大家總結...
摘要:系列文章更新計劃列表主要對一些中常用的框架進行簡單的介紹及快速上手,外加相關資料的收集更新列表會不定期的加入新的內容以進行擴充,如果你對此感興趣可以站內聯系我。 導讀: 從第一次接觸Spring Boot 至今已經有半年多了,在這期間也瀏覽了許多和Spring Boot 相關的書籍及文章,公司里面的許多項目也一直在使用Spring Boot。關于Spring Boot的一些看法:Spr...
閱讀 3396·2021-09-22 15:17
閱讀 2747·2021-09-02 15:15
閱讀 1770·2019-08-30 15:54
閱讀 2007·2019-08-30 14:02
閱讀 2534·2019-08-29 16:58
閱讀 2995·2019-08-29 16:08
閱讀 1335·2019-08-26 12:24
閱讀 1660·2019-08-26 10:41