使用Springboot注入帶參數(shù)的構造函數(shù)實例
我們使用@Service注解一個service,默認注入的是不帶參的構造函數(shù),如果我們需要注入帶參的構造函數(shù),怎么辦?
使用@Configuration+ @Bean注解來實現(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;
}
}
補充知識:Spring Boot - Spring Beans之依賴構造器注入
使用所有Spring Framework技術定義的beans以及他們的依賴注入都是免費的。簡單起見,我們通常使用@CompnentScan查找beans,結合@Autowired構造注入效果比較好。
如果你的代碼結構是按之前建議的結構(將應用類放到根包里),你可以添加@ComponentScan,不需要任何參數(shù)。這樣你所有的應用組件(@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注入帶參數(shù)的構造函數(shù)實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
IDEA2023常用配置指南(JDK/系統(tǒng)設置等常用配置)
idea很強大,但是初次安裝默認的有很多設置并不是滿足我們開發(fā)的需要,下面這篇文章主要給大家介紹了關于IDEA2023常用配置(JDK/系統(tǒng)設置等常用配置)的相關資料,需要的朋友可以參考下2023-12-12
Springmvc加ajax實現(xiàn)上傳文件并頁面局部刷新
這篇文章主要介紹了Springmvc加ajax實現(xiàn)上傳文件并頁面局部刷新,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06

