[Spring Java JSP SSH ] 关于spring 的ApplicationContextAware借口Spring不能实例化

tony_jingzhou 2012-08-29

今天研究了一下spring 和hibernate集成,然后有个问题搞了我快一天了,目前木有搞出来。

这是实现了ApplicationContextAware的类

 

public class SpringInstance implements ApplicationContextAware
 {
	
	private static Logger log = LoggerFactory.getLogger(SpringInstance.class);

	/** 变量描述:Spring的应用上下文. */
	private static ApplicationContext ctx;

	/**
	 * 实现说明:设置Spring的应用上下文. <BR>
	 * @param applicationContext:Spring的应用上下文
	 * @throws BeansException
	 * @since 
	 */
	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		log.debug("--------------------------Spring注入"+applicationContext);
		SpringInstance.ctx = applicationContext;
	}

	/**
	 * 方法功能:获得Spring的应用上下文. <BR>
	 * 调用例子:ApplicationContext ac = GetSpringInstance.getCtx();
	 * @return Spring的上下文
	 * @since 
	 */
	public static ApplicationContext getCtx() {
		log.debug("============="+ctx);
		log.info(" the spring resource factory ctx is :" +ctx.getId());
		return ctx;
	}

	/**
	 * 方法功能:获得spring工厂中的bean资源. <BR>
	 * 调用例子:GetSpringInstance.getBean(beanid);
	 * @param ctx:Spring的应用上下文
	 * @since 
	 */
	public static Object getBean(String beanid) {
		log.info(" the spring resource factory ctx is :" +ctx.getId());
		return  ctx.getBean(beanid);
	}
	
	/**
	 * 方法功能:获得spring工厂中的bean资源. <BR>
	 * 调用例子:GetSpringInstance.getBean(beanid);
	 * @param ctx:Spring的应用上下文
	 * @since 
	 */
	public static void refreshCtx(){
		if(ctx == null)((ConfigurableApplicationContext) ctx).refresh();
	}

}

 然后我在Spring中配置了

<!--spring factory-->
    <bean id="springInstance" class="com.euc.common.module.base.transaction.SpringInstance"/>

 

但是,当服务器启动的时候,并没有打印出

log.debug("--------------------------Spring注入"+applicationContext);

的字样,不知道为什么,找了很久

tony_jingzhou 2012-08-29
OK,搞定了,是因为SpringInstance没有随spring初始化的原因。加上lazy-init="false" 就OK了
Global site tag (gtag.js) - Google Analytics