Spring无法注入Static变量的原因及Spring注入静态变量

spring不能注入static变量的原因:

       Spring 依赖注入 是依赖 set方法

       set方法是 是普通的对象方法

       static变量是类的属性

所以下面这种方式注入静态的变量是会报空指针异常的。

spring 中如何注入静态变量:

  1.xml方式实现:

<bean id="mongoFileOperationUtil" class="com.*.*.MongoFileOperationUtil" init-method="init">
	<property name="dsForRW" ref="dsForRW"/>
</bean>

2、用getBean的方式

3、@PostConstruct方式实现:

import org.mongodb.morphia.AdvancedDatastore;
import org.springframework.beans.factory.annotation.Autowired;
 
 
@Component
public class MongoFileOperationUtil {
    @Autowired
    private  AdvancedDatastore dsForRW;
 
    private static MongoFileOperationUtil mongoFileOperationUtil;
 
    @PostConstruct
    public void init() {
        mongoFileOperationUtil = this;
        mongoFileOperationUtil.dsForRW = this.dsForRW;
    }
 
}

@PostConstruct 注解的方法在加载类的构造函数之后执行,也就是在加载了构造函数之后,执行init方法;(@PreDestroy 注解定义容器销毁之前的所做的操作)
这种方式和在xml中配置 init-method和 destory-method方法差不多,定义spring 容器在初始化bean 和容器销毁之前的所做的操作;

4、set方法上添加@Autowired注解,类定义上添加@Component注解;

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值