該註解包含:
包含@configuration,表示「配置類」:
1.該類是乙個配置類
2.加了@configuration註解的類,會自動納入spring容器 (@component)
@component (把普通pojo例項化到spring容器中,相當於配置檔案中的)
@configuration
public class a//表示a是乙個 用於 配置的類
1.@autoconfigurationpackage //注入service controller
@autowired
beanfactory beanfactory;
@test
void testautoconfigurationpackage()
→
@enableautoconfiguration
→@autoconfigurationpackage
→@import(autoconfigurationpackages.registrar.class)
→registerbeandefinitions方法
作用:就會將該包及所有的子包 全部納入spring容器,spring boot在啟動時,會根據meta-inf/spring.factories找到相應的三方依賴,並將這些依賴引入本專案
2.@import(autoconfigurationimportselector.class) //注入第三方jar包
總結:
編寫專案時,一般會 對自己寫的** 以及 三方依賴 進行配置。但是spring boot可以自動進行配置:
a:自己寫的**,spring boot通過@springbootconfiguration自動幫我們配置;
b. 三方依賴 通過spring-boot-autoconfigure-2.0.3.release.jar中
的meta-inf/spring.factories進行宣告,然後通過@enableautoconfiguration的@import
(autoconfigurationimportselector
.class
)開啟使用即可
spring-boot-autoconfigure-2.0.3.release.jar包中 包含了 j2ee整合體系中 需要的依賴。
c.如何自動裝配
:研究org.springframework.boot.autoconfigure.web.servlet.httpencodingautoconfiguration,\
通過觀察該原始碼 發現:
@configuration:標識此類是乙個配置類 、將此類納入spring ioc容器
@enableconfigurationproperties(httpencodingproperties.class): 通過httpencodingproperties將編碼設定為了utf_8 (即自動裝配為utf_8, 如何修改改編碼:通過改httpencodingproperties的 predfix+屬性名 進行修改 [配置檔案中,yml/properties])
即:該註解給了預設編碼utf8,並且提供了prefix+屬性名 的方式 供我們修改編碼。
當屬性滿足要求時,此條件成立 :要求 如果沒有配置spring.http.encoding.enabled=***, 則成立。
總結:1每乙個xxautoconfiguration 都有很多條件@conditionalon***,當這些條件都滿足時,
則此配置自動裝配生效(utf-8)。但是我們可以手工修改改 自動裝配: ***properties檔案中的
prefix.屬性名=value
2全域性配置檔案中的key, **於某個properties檔案中的 prefix+屬性名
--boot通過xxautoconfiguration實現自動裝配 ,修改預設值 ***properties( prefix+屬性名)
控制台說明:
positive matches列表 表示 spring boot自動開啟的裝配
negative matches列表 表示spring boot在此時 並沒有啟用的自動裝配。
自己寫的
引入三方依賴(jar、配置)
SpringBoot自動配置分析(一)
static class registrar implements importbeandefinitionregistrar,determinableimports目光停留在getpackagename 上,獲取包名?打個斷點,debug一下。這樣看不是很明白,結合我的專案的目錄樹看看就明白了。原...
Spring boot自動配置
1 從原始碼角度看spring boot 自動配置 這個方法呼叫的是 initialize sources suppresswarnings private void initialize object sources this.webenvironment deducewebenvironment...
Spring Boot 自動配置
在spring中假設我們要使用乙個資料來源,必須在配置datasource才能使用,但是使用了spring boot這些就不存在了,相當於spring boot為我們做了很多配置的工作。spring 4提供了乙個更通用的基於條件的bean的建立方式,即使用 conditional 實現conditi...