教你如何使用Springboot注入帶引數的建構函式

安全劍客發表於2020-05-12
這篇文章主要介紹了使用Springboot注入帶引數的建構函式例項,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我們使用@Service註解一個service,預設注入的是不帶參的建構函式,如果我們需要注入帶參的建構函式,怎麼辦?

使用@Configuration+ @Bean註解來實現注入:
 @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;
  
 }
}
補充知識:Spring Boot - Spring Beans之依賴構造器注入

使用所有Spring Framework技術定義的beans以及他們的依賴注入都是免費的。簡單起見,我們通常使用@CompnentScan查詢beans,結合@Autowired構造注入效果比較好。

如果你的程式碼結構是按之前建議的結構(將應用類放到根包裡),你可以新增@ComponentScan,不需要任何引數。這樣你所有的應用元件(@Component,@Service,@Repository,@Controller等等)都將會註冊為Spring Beans。

看下面的例子,@Service Bean使用構造注入,獲取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;
 }
  
 // ...
  
}

如果這個bean有一個構造,可以省略@Autowired。

@Service
public class DatabaseCacheService implements CacheService {
  
 private final CacheManager cacheManager;
  
 public DatabaseCacheService(CacheManager cacheManager) {
 this.cacheManager = cacheManager;
 }
 // ...
  
}

注意,使用構造注入允許cacheManager標記為final,這也表示以後不能再被更改了。

以上這篇使用Springboot注入帶引數的建構函式例項就是小編分享給大家的全部內容了,希望能給大家一個參考。

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2691468/,如需轉載,請註明出處,否則將追究法律責任。

相關文章