Java静态代码块与spring注解注入的优先级问题
来源:互联网 发布:北京网络派出所 编辑:程序博客网 时间:2024/05/30 04:29
遇到这样一个问题,代码如下:
package com.wonders.stpt.organTree.util;import java.util.HashMap;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Component;import com.wonders.stpt.organTree.service.TorganRelationService;@Component("organTreeUtil")public class OrganTreeUtil {private static HashMap<String,String> receiversMap = null;private static HashMap<String,String> configersMap = null;private static TorganRelationService torganRelationService;public static TorganRelationService getTorganRelationService() {return torganRelationService;}@Autowired(required=false)public void setTorganRelationService(@Qualifier("torganRelationService")TorganRelationService torganRelationService) {OrganTreeUtil.torganRelationService = torganRelationService;}static {init();}public static void init(){if(receiversMap==null){//receiversMap = new HashMap<String, String>();//receiversMap = (HashMap<String, String>) torganRelationService.getReceivers();}if(configersMap==null){//configersMap = new HashMap<String, String>();//configersMap = (HashMap<String, String>) torganRelationService.getConfigers();}}public static HashMap<String,String> getReceiversMap(){synchronized(receiversMap){if(receiversMap==null){receiversMap = (HashMap<String, String>) torganRelationService.getReceivers();}}return receiversMap;}public static HashMap<String,String> getConfigersMap(){synchronized(configersMap){if(configersMap==null){configersMap = (HashMap<String, String>) torganRelationService.getReceivers();}}return configersMap;}public static void refresh(){receiversMap = null;configersMap = null;}}
可以看出,本来想在静态代码块中直接初始化map 的值,但运行后发现spring报空指针,导致不能生成bean,
而报空指针的行数就是 调用service的地方。之后觉得可能是 执行到static块时,spring还未注入。。。
修改后,运行成功。
- Java静态代码块与spring注解注入的优先级问题
- java的代码块优先级 (静态代码块,构造代码块,普通代码块)
- 解决Spring注解无法注入静态变量的问题
- java关于静态代码块的问题
- java 代码块,构造代码块,与静态代码块
- 代码块优先级问题
- Java中普通代码块,构造代码块,静态代码块区别和优先级
- Java中父类与子类的普通代码块,构造代码块,静态代码块 初始化
- java 静态代码块与静态方法
- Java静态与非静态代码块
- java 静态代码块与非静态代码块
- Java 静态代码块与非静态代码块的区别
- JAVA中父类与子类静态代码块、非静态代码块、构造函数的加载顺序
- Java中静态代码块、非静态代码块、构造函数的执行顺序与作用
- java的静态代码块
- 对静态代码块执行优先级的测试
- Java继承关系中静态代码块的顺序问题
- Java中构造函数、构造代码块、静态代码块等的执行顺序问题
- QT 连接数据库的详细步骤
- [吐槽] 服务器上跑java
- 程序员技术练级攻略
- Redhat 9 下的USB挂载
- 如何提高mysql load data infile的速度
- Java静态代码块与spring注解注入的优先级问题
- QT ODBC方式连接MS SQLSERVER2000/2005、ACCESS示例
- JVM调优总结 -Xms -Xmx -Xmn -Xss
- 自己转C++的一些经验
- C# 绘制矢量图形
- 手机通讯录备份
- lnmp去掉nginx上传目录的PHP执行权限
- 测试程序中某个过程所用的时间(或算法效率),这样做可以吗?
- C# 中的XML操作详解:读取,过滤以及数据绑定