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...