溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Springboot注入帶參數(shù)的構(gòu)造函數(shù)

發(fā)布時(shí)間:2020-07-30 13:50:31 來源:億速云 閱讀:3000 作者:小豬 欄目:編程語言

這篇文章主要講解了如何使用Springboot注入帶參數(shù)的構(gòu)造函數(shù),內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

我們使用@Service注解一個(gè)service,默認(rèn)注入的是不帶參的構(gòu)造函數(shù),如果我們需要注入帶參的構(gòu)造函數(shù),怎么辦?

使用@Configuration+ @Bean注解來實(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,這也表示以后不能再被更改了。

看完上述內(nèi)容,是不是對(duì)如何使用Springboot注入帶參數(shù)的構(gòu)造函數(shù)有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI