springboot學習一 自動注入

2021-10-02 13:33:27 字數 2321 閱讀 9686

該註解包含:

包含@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...