SpringBoot bean依賴屬性配置詳細(xì)介紹
創(chuàng)建實(shí)體類
@Data public class Cat { private String name; private Integer age; }
@Data public class Mouse { private String name; private Integer age; }
配置文件application.yml使用固定格式為屬性注入數(shù)據(jù)
cartoon:
cat:
name: "圖多蓋洛"
age: 5
mouse:
name: "泰菲"
age: 6
業(yè)務(wù)類定義業(yè)務(wù)功能bean,在引導(dǎo)類通常使用@Import導(dǎo)入,解耦強(qiáng)制加載bean
使用@EnableConfigurationProperties注解設(shè)定使用屬性類時(shí)加載bean
@Data //當(dāng)加載CartoonCatAndMouse類時(shí)將CartoonProperties類加載成bean,不用不加載,解耦合 @EnableConfigurationProperties(CartoonProperties.class) public class CartoonCatAndMouse { private Cat cat; private Mouse mouse; private CartoonProperties cartoonProperties; public CartoonCatAndMouse(CartoonProperties cartoonProperties){ this.cartoonProperties = cartoonProperties; cat = new Cat(); cat.setName(cartoonProperties.getCat()!=null && StringUtils.hasText(cartoonProperties.getCat().getName()) ? cartoonProperties.getCat().getName() : "tom"); cat.setAge(cartoonProperties.getCat()!=null && cartoonProperties.getCat().getAge()!=null ? cartoonProperties.getCat().getAge() : 3); mouse = new Mouse(); mouse.setName(cartoonProperties.getMouse()!=null && StringUtils.hasText(cartoonProperties.getMouse().getName()) ? cartoonProperties.getMouse().getName() : "jerry"); mouse.setAge(cartoonProperties.getMouse()!=null && cartoonProperties.getMouse().getAge()!=null ? cartoonProperties.getMouse().getAge() : 4); } public void play(){ System.out.println(cat.getAge()+"歲的"+cat.getName()+"和"+ mouse.getAge()+"歲的"+mouse.getName()+"打起來(lái)了"); } }
將業(yè)務(wù)功能bean運(yùn)行需要的資源抽取長(zhǎng)獨(dú)立的屬性類,設(shè)置讀取配置文件的信息
@Data //類與配置文件綁定 @ConfigurationProperties(prefix = "cartoon") public class CartoonProperties { private Cat cat; private Mouse mouse; }
測(cè)試:
@SpringBootApplication //當(dāng)運(yùn)行時(shí)將CartoonCatAndMouse類加載成bean,不允許不加載 @Import(CartoonCatAndMouse.class) public class Demo15SpringbootBeanpropertiesApplication { public static void main(String[] args) { ConfigurableApplicationContext ctx = SpringApplication.run(Demo15SpringbootBeanpropertiesApplication.class, args); CartoonCatAndMouse bean = ctx.getBean(CartoonCatAndMouse.class); bean.play(); } }
總結(jié):
- 業(yè)務(wù)bean的屬性可以為其設(shè)定默認(rèn)值
- 當(dāng)需要設(shè)置時(shí)通過(guò)配置文件傳遞屬性
- 業(yè)務(wù)bean應(yīng)盡量避免設(shè)置強(qiáng)制加載,而是根據(jù)需要導(dǎo)入后加載,降低spring容器管理bean的強(qiáng)度
到此這篇關(guān)于SpringBoot bean依賴屬性配置詳細(xì)介紹的文章就介紹到這了,更多相關(guān)SpringBoot bean依賴屬性配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis映射文件之常用標(biāo)簽及特殊字符的處理方法
這篇文章主要介紹了Mybatis映射文件常用標(biāo)簽及特殊字符的處理,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05SpringAnimation 實(shí)現(xiàn)菜單從頂部彈出從底部消失動(dòng)畫效果
最近做項(xiàng)目遇到這樣一個(gè)需求,要求實(shí)現(xiàn)一種菜單,菜單從頂部彈入,然后從底部消失,頂部彈入時(shí),有一個(gè)上下抖動(dòng)的過(guò)程,底部消失時(shí),先向上滑動(dòng),然后再向下滑動(dòng)消失。下面給大家?guī)?lái)了實(shí)現(xiàn)代碼,感興趣的朋友一起看看吧2018-05-05老生常談Java網(wǎng)絡(luò)編程TCP通信(必看篇)
下面小編就為大家?guī)?lái)一篇老生常談Java網(wǎng)絡(luò)編程TCP通信(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05Java的Spring框架中AOP項(xiàng)目的一般配置和部署教程
這篇文章主要介紹了Java的Spring框架中AOP項(xiàng)目的一般配置和部署教程,AOP面向方面編程的項(xiàng)目部署結(jié)構(gòu)都比較類似,因而也被看作是Spring的一種設(shè)計(jì)模式使用,需要的朋友可以參考下2016-04-04Spring擴(kuò)展BeanFactoryPostProcessor使用技巧詳解
這篇文章主要為大家介紹了Spring擴(kuò)展BeanFactoryPostProcessor使用技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09java基于控制臺(tái)的學(xué)生學(xué)籍管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java基于控制臺(tái)的學(xué)生學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07SpringCloud解決Feign異步回調(diào)問題(SpringBoot+Async+Future實(shí)現(xiàn))
這篇文章主要介紹了SpringCloud解決Feign異步回調(diào)問題(SpringBoot+Async+Future實(shí)現(xiàn)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11