在静态方法中使用Bean对象

静态方法无法直接注入Bean,因为Bean加载晚于静态变量。要使用Bean,可以手动赋值给静态变量,或者通过@PostConstruct、上下文获取Bean对象。文章介绍了在静态方法中使用依赖注入的Bean对象的三种方法。
摘要由CSDN通过智能技术生成

Bean是在创建对象时加载依赖的,而静态变量是属于类属性,是优先于对象属性加载的,因此Bean是无法注入静态变量的,被标记的静态变量值为null,当然也无法在静态方法中使用Bean对象。

如果要在静态方法中使用Bean对象,那么需要将加载完成的Bean手动赋值给静态变量再通过静态变量来使用。

假设现有两个类A、B,A被标记为Bean了,现在要在B的静态方法中使用依赖注入的A对象。基于之前的思路有如下三种方式:

方法1:使用@PostConstruct

@Component
public class B {
   

    private A a;
    private static B b;

    @Autowired
    public B(A a) {
   
        this.a = a;
    }

    @PostConstruct
    public void init() {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值