Springboot静态变量注⼊springboot是啥
在Springboot中注⼊静态变量
@Component
class MyComp{
@Autowire
MyObject mo;
}//√
@Component
class MyComp{
@Autowire
static MyObject mo;
}//× mo为null
解决⽅法:
1. @PostConstruct
@Component
class MyComp{
@Autowired
MyObject t_mo;
static MyObject mo;
@PostConstruct
void init_mo(){
<=t_mo;
}
}
@PostConstruct注解的⽅法将在Bean创建以及注⼊完成之后,因此利⽤⼀个注⼊好的临时t_mo改变mo的引⽤就能完成mo的注⼊。
缺点就是,浪费了⼀个t_mo的Field,不太好看。
2. @Autowired
啥?不是说不能⾃动注⼊静态变量吗?咋⼜来这⼿?
@Component
class MyComp{
static MyObject mo;
@Autowired
void inject_mo(MyObject _mo){
<=_mo;
//something else
}
}//√
@Autowired注释⽅法则注⼊的是⽅法参数,并且Springboot在create bean后会调⽤该⽅法,因此通过这个⽅式我们除了注⼊静态变量之外还可以⼲⼀些别的初始化⼯作。并且(主要还是)代码⽐较好看。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论