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

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" 可以保证 立即加载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值