SpringBoot自動配置實現(xiàn)流程詳細分析
第一種
給容器中的組件加上
@ConfigurationProperties注解即可
測試:
@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
private String brand;
private Integer price;
private Integer seatNum;
public Integer getSeatNum() {
return seatNum;
}
public void setSeatNum(Integer seatNum) {
this.seatNum = seatNum;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
@Override
public String toString() {
return "Car{" +
"brand='" + brand + '\'' +
", price=" + price +
", seatNum=" + seatNum +
'}';
}
public Car() {
}
}在application.properties中屬性:
mycar.seatNum = 4
mycar.brand = BMW
mycar.price = 100000
即可給之后new 的Car 對象自動配置。
運行:
public class MainApplication {
public static void main(String[] args) {
//返回springboot中的ioc容器
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
Car car = run.getBean("car", Car.class);
System.out.println(car);
}
}控制臺結(jié)果:

第二種
第一種的情況下是自己寫的類作為組件,實現(xiàn)自動裝配的過程;
但有時候使用第三方類的時候無法將其設(shè)置為自己的組件,所以就需要用
@EnableConfigurationProperties + @ConfigurationProperties
將Car類刪除@Component注解,此時Car類已經(jīng)不是組件了:
11 usages
@ConfigurationProperties(prefix = "mycar " )
public class Car {
3 usages
private String brand ;
3 usages
private Integer price ;
3 usages
此時,假設(shè)Car是第三方提供的類:
對于第三方的類 想要其作為組件就需要@Bean注解,就和之前的SSM項目中配置的bean
標簽一樣:
SSM中的配置文件中:
<bean id="car" class="xxx.xxx.xxx.Car">
<property name="brand" value=""/>
<property name="price" value=" "/>
<property name="seatNum" value=" "/>
</bean>就等同于SpringBoot中配置類下的:
@Bean
public Car car(){
Car car = new Car();
return car;
}其中屬性的賦值就需要在Car類上增加
@ConfigurationProperties(prefix = "mycar")注解
最后在該配置類上使用
@EnableConfigurationProperties(Car.class)注解開啟即可
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(Car.class)
public class CarAutoConfiguration {
@Bean
public Car car(){
Car car = new Car();
return car;
}
}控制臺顯示結(jié)果一樣:

到此這篇關(guān)于SpringBoot自動配置實現(xiàn)流程詳細分析的文章就介紹到這了,更多相關(guān)SpringBoot自動配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring關(guān)閉Tomcat Servlet容器時內(nèi)存泄漏問題解決方案
這篇文章主要介紹了Spring關(guān)閉Tomcat Servlet容器時內(nèi)存泄漏問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-10-10
springboot通過SchedulingConfigurer實現(xiàn)多定時任務注冊及動態(tài)修改執(zhí)行周期(示例詳解)
這篇文章主要介紹了springboot通過SchedulingConfigurer實現(xiàn)多定時任務注冊及動態(tài)修改執(zhí)行周期,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06
Springboot中靜態(tài)文件的兩種引入方式總結(jié)
這篇文章主要介紹了Springboot中靜態(tài)文件的兩種引入方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java中的CyclicBarrier循環(huán)柵欄詳解
這篇文章主要介紹了Java中的CyclicBarrier循環(huán)柵欄詳解,CyclicBarrier循環(huán)柵欄是用來進行線程協(xié)作,等待線程滿足某個計數(shù),構(gòu)造時設(shè)置計數(shù)個數(shù),每個線程執(zhí)行到某個需要“同步”的時刻調(diào)用 await()方法進行等待,當?shù)却木€程數(shù)滿足計數(shù)個數(shù)時,繼續(xù)執(zhí)行,需要的朋友可以參考下2023-12-12

