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注解;