使用Springboot注入帶參數(shù)的構(gòu)造函數(shù)實(shí)例
我們使用@Service注解一個(gè)service,默認(rèn)注入的是不帶參的構(gòu)造函數(shù),如果我們需要注入帶參的構(gòu)造函數(shù),怎么辦?
使用@Configuration+ @Bean注解來(lái)實(shí)現(xiàn)注入:
@Configuration public class BlockChainServiceConfig { @Bean BlockChainService blockChainService(){ return new BlockChainService(1); } }
service類
public class BlockChainService { private int number; public BlockChainService(int number) { this.number=number; } }
補(bǔ)充知識(shí):Spring Boot - Spring Beans之依賴構(gòu)造器注入
使用所有Spring Framework技術(shù)定義的beans以及他們的依賴注入都是免費(fèi)的。簡(jiǎn)單起見,我們通常使用@CompnentScan查找beans,結(jié)合@Autowired構(gòu)造注入效果比較好。
如果你的代碼結(jié)構(gòu)是按之前建議的結(jié)構(gòu)(將應(yīng)用類放到根包里),你可以添加@ComponentScan,不需要任何參數(shù)。這樣你所有的應(yīng)用組件(@Component,@Service,@Repository,@Controller等等)都將會(huì)注冊(cè)為Spring Beans。
看下面的例子,@Service Bean使用構(gòu)造注入,獲取CacheManager bean。
package com.example.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class DatabaseCacheService implements CacheService { private final CacheManager cacheManager; @Autowired public DatabaseCacheService(CacheManager cacheManager) { this.cacheManager = cacheManager; } // ... }
如果這個(gè)bean有一個(gè)構(gòu)造,可以省略@Autowired。
@Service public class DatabaseCacheService implements CacheService { private final CacheManager cacheManager; public DatabaseCacheService(CacheManager cacheManager) { this.cacheManager = cacheManager; } // ... }
注意,使用構(gòu)造注入允許cacheManager標(biāo)記為final,這也表示以后不能再被更改了。
以上這篇使用Springboot注入帶參數(shù)的構(gòu)造函數(shù)實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
注入jar包里的對(duì)象,用@autowired的實(shí)例
這篇文章主要介紹了注入jar包里的對(duì)象,用@autowired的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-09-09Spring?Task任務(wù)調(diào)度的實(shí)現(xiàn)示例
本文主要介紹了Spring?Task任務(wù)調(diào)度的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06JAVA浮點(diǎn)數(shù)計(jì)算精度損失底層原理與解決方案
本文主要介紹了JAVA浮點(diǎn)數(shù)計(jì)算精度損失底層原理與解決方案。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02Spring Boot整合FTPClient線程池的實(shí)現(xiàn)示例
這篇文章主要介紹了Spring Boot整合FTPClient線程池的實(shí)現(xiàn)示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-12-12Java代碼中與Lua相互調(diào)用實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Java代碼中與Lua相互調(diào)用實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Java中l(wèi)ist集合為空或?yàn)閚ull的區(qū)別說(shuō)明
這篇文章主要介紹了Java中l(wèi)ist集合為空或?yàn)閚ull的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11SpringBoot中@Value獲取值和@ConfigurationProperties獲取值用法及比較
在Spring Boot中,@Value注解是一個(gè)非常有用的特性,它允許我們將外部的配置注入到我們的Bean中,@ConfigurationProperties用于將配置文件中的屬性綁定到 Java Bean 上,本文介紹了@Value獲取值和@ConfigurationProperties獲取值用法及比較,需要的朋友可以參考下2024-08-08