POM使用exclusions標簽排除多個依賴包的同壹個依賴時,需要註意pom依賴的順序問題(當然也可以每個都進行排除)。
以下為SpringBoot相關的依賴:
運行後控制臺結果如下:
當我調整了pom中Spring的依賴順序後如下(其余保持完全不變):
再次啟動應用時,控制臺打印如下:
現象:經過依賴分析,確實日誌沖突了(spring-boot-starter-jdbc、spring-boot-starter-thymeleaf)
疑問:難道pom的依賴還有順序的要求?
經過反復驗證,發現當MAVEN使用exclusions標簽時,需要在依賴的第壹個包進行排除,如下:
SpringBean的註冊和註入的幾種常用方式和區別
我們壹般在項目開發中都是使用這種方式。
壹般導入第三方組件的時候使用,如註冊壹個RedisTemplate:
壹般快速導入壹批組件時使用,如同時註冊好幾個動物類:
容器中的Bean:
只有動物園裏面有貓和狗的時候我麽才將豬註入進去。ImportBeanDefinitionRegistrar註冊器,在註冊bean的過程中會在最後執行。
輸出結果:
以下是他們在實現依賴註入時執行順序的概括:
@Autowiredand@Inject
@Resource
spring-boot-student-spring工程
為監控而生的多級緩存框架layering-cache這是我開源的壹個多級緩存框架的實現,如果有興趣可以看壹下
SpringBoot的配置加載順序是什麽?1.開啟DevTools時,~/.spring-boot-devtools.properties
2.測試類上的@TestPropertySource註解
3.@SpringBootTest#properties屬性
4.**==命令?參數(--server.port=9000)==**
5.SPRING_APPLICATION_JSON中的屬性
6.ServletConfig初始化參數
7.ServletContext初始化參數
8.java:comp/env中的JNDI屬性
9.System.getProperties()
10.**操作系統環境變量**
11.random.*涉及到的RandomValuePropertySource
12.**jar包外部的application-{profile}.properties或.yml**
13.**jar包內部的application-{profile}.properties或.yml**
14.**jar包外部的application.properties或.yml**
15.**jar包內部的application.properties或.yml**
16.**@Configuration類上的@PropertySource**
17.SpringApplication.setDefaultProperties()設置的默認屬性
看到這麽多,是不是懵逼了,感覺完全記不住,就去黑馬程序員官網視頻庫看免費視頻。
springbootimportsource怎麽設置加載順序SpringBoot所提供的配置優先級順序比較復雜。按照優先級從高到低的順序,具體的列表如下所示。
命令行參數。
通過System.getProperties()獲取的Java系統參數。
操作系統環境變量。
從java:comp/env得到的JNDI屬性。
通過RandomValuePropertySource生成的“random.*”屬性。
應用Jar文件之外的屬性文件。(通過spring.config.location參數)
應用Jar文件內部的屬性文件。
在應用配置Java類(包含“@Configuration”註解的Java類)中通過“@PropertySource”註解聲明的屬性文件。
通過“SpringApplication.setDefaultProperties”聲明的默認屬性。
Spring可以利用@Order控制配置類的加載順序
springBoot的類加載順序是怎樣的呢Tomcat的class加載的優先順序壹覽
1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件。
2.環境變量CLASSPATH中的jar和class文件。
3.$CATALINA_HOME/common/classes下的class文件。
4.$CATALINA_HOME/commons/endorsed下的jar文件。
5.$CATALINA_HOME/commons/i18n下的jar文件。
6.$CATALINA_HOME/common/lib下的jar文件。