Spring boot自動配置

2021-08-18 19:47:59 字數 2315 閱讀 5775

1、從原始碼角度看spring boot 自動配置

這個方法呼叫的是

initialize(sources);

}@suppresswarnings()

private void initialize(object sources)

this.webenvironment = deducewebenvironment();

setinitializers((collection) getspringfactoriesinstances(}

getspringfactoriesinstances方法最終最重要的呼叫是:

public static listloadfactorynames(class<?> factoryclass, classloader classloader) 

return result;

} catch (ioexception ex)

}

而 factories_resource_location=meta-inf/spring.factories

這個其實就是一些自動配置類,如果滿足條件就建立配置類,載入配置。這個其實就是spring boot根據jar包自動配置的原理。

在refreshcontext中,有這麼一系列過程,這個就是springioc構建過程

synchronized

(this

.startupshutdownmonitor)

invokebeanfactorypostprocessors這個方法中會將額外的bean給加入進來,這個方法就是bean factory級別的後置處理器

3、模擬自動配置

3.1屬性類

package cn.itcast.springboot.demo.auto;

import org.springframework.stereotype.component;

/** * 建立真正的bean需要的屬性類

* 2023年4月15日

* */

@component

public class helloproperties

public void setmsg(string msg)

}

3.2 spring需要管理的bean

package cn.itcast.springboot.demo.auto;

public class helloservice //為我們服務的方法

public string getmsg()

public void setmsg(string msg)

}

3.4 模擬spring boot的自動配置類

它主要負責把helloproperties 的屬性注入到helloservice 中去

package cn.itcast.springboot.demo.auto;

import org.springframework.beans.factory.annotation.autowired;

import org.springframework.boot.autoconfigure.condition.conditionalonclass;

import org.springframework.boot.autoconfigure.condition.conditionalo****singbean;

import org.springframework.boot.context.properties.enableconfigurationproperties;

import org.springframework.context.annotation.bean;

import org.springframework.context.annotation.configuration;

@configuration //配置類

@conditionalonclass(helloservice.class)//當類路徑存在這個類時才會載入這個配置類

public class helloautoconfiguration

}

通過上面三步在spring容器中就建立了 helloservice ,並且把屬性都自動配置好了

Spring Boot 自動配置

在spring中假設我們要使用乙個資料來源,必須在配置datasource才能使用,但是使用了spring boot這些就不存在了,相當於spring boot為我們做了很多配置的工作。spring 4提供了乙個更通用的基於條件的bean的建立方式,即使用 conditional 實現conditi...

springboot自動配置

springboot 一.切換條件condition 1.配置類加 configuration,返回值為所需實體類的方法加 bean 2.實體類方法加 conditional x.class 3.類實現condition類重寫它的public boolean matches conditioncon...

SpringBoot 自動配置

指的是springboot會自動將一些配置類的bean註冊進ioc容器,我們可以需要的地方使用 autowired或者 resource等註解來使用它。springboot並不是把所有的配置類全部掃瞄進ioc容器中,在環境滿足一定條件後,才會進行註冊到ioc中.上面註解中包含 enableautoc...