您的位置:首页 > 编程语言 > Java开发

static方法中调用接口,SpringContextUtil工具类实现

2014-11-07 19:01 633 查看
1.先写个工具类,实现ApplicationContextAware接口,然后他会把ApplicationContext对象传给你,在setApplicationContext方法里已经把ApplicationContext传给你了,然后去完成初始化。
public class SpringContextUtil implementsApplicationContextAware{
private static ApplicationContext applicationContext;

@Override
public void setApplicationContext(ApplicationContextapplicationContext){
SpringContextUtil.applicationContext =applicationContext;
}

public static ApplicationContextgetApplicationContext(){
return applicationContext;
}

public static Object getBean(String name) throwsBeansException{
return applicationContext.getBean(name);
}
}


2.applicationContext也需要注入否则报NullPointException,在spring配置文件applicationContext.xml中配置如下:
<bean id="springContextUtil"class="com.sinosoft.sepmis.util.SpringContextUtil"lazy-init="false"></bean>
3.在代码中使用:
private static LoggerUtilService loggerUtilService;
loggerUtilService =(LoggerUtilService)SpringContextUtil.getBean("loggerUtilService");


4.注意:
解释下第2条中配置为啥要加 lazy-init="false"
在你的spring配置文件中一般会有default-default-lazy-init="true" 这句话。该属性默认为false状态,这样导致spring在启动过程导致在启动时候,会默认加载整个对象实例图,从初始化ACTION配置、到service配置到dao配置、乃至到数据库连接、事务等等。spring的启动会很慢所以在开发时都会改为true,延迟加载,然后就是会报NullPointException。
注入 加上lazy-init="false" 可以保证 立即加载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐