使⽤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) {
springboot结构this.number=number;
}
}
补充知识:Spring Boot - Spring Beans之依赖构造器注⼊
使⽤所有Spring Framework技术定义的beans以及他们的依赖注⼊都是免费的。简单起见,我们通常使⽤@CompnentScan查beans,结合@Autowired构造注⼊效果⽐较好。
如果你的代码结构是按之前建议的结构(将应⽤类放到根包⾥),你可以添加@ComponentScan,不需要任何参数。这样你所有的应⽤组件(@Component,@Service,@Repository,@Controller等等)都将会注册为Spring Beans。
看下⾯的例⼦,@Service Bean使⽤构造注⼊,获取CacheManager bean。
ample.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注⼊带参数的构造函数实例就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家
多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。