我想再应用程序中集成hibernate和spring框架,但是spring初始化的时候每次都是要使用:
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");来获得bean。
这样会不会很浪费资源,有没有一个好的方法,一次初始化spring后,整个应用程序未关闭前,不结束spring容器的生命 周期,可以多次获得bean。在应用程序关闭后,随之关闭Spring容器。
在线等回答。
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");来获得bean。
这样会不会很浪费资源,有没有一个好的方法,一次初始化spring后,整个应用程序未关闭前,不结束spring容器的生命 周期,可以多次获得bean。在应用程序关闭后,随之关闭Spring容器。
在线等回答。
写进一个专门的类里。
以后直接用就行了。
web.xml初始化spring容器时,spring容器会加载所以bean,执行依赖注入操作,这时候可以通过bean来获取ApplicationContext 对象
使用ApplicationContextAware接口,新建一个java类,继承这个接口,配置好bean.xml文件
public class MySpringContainer implements ApplicationContextAware,InitializingBean{ private static ApplicationContext ctx;
@Override
public void setApplicationContext(ApplicationContext ctx)
throws BeansException {
//初始化ctx
setCtx(ctx);
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("初始化SpringContainer...");
}
public static <T> T getBean(String beanId, Class<T> clazz){
if(beanId==null || "".equals(beanId)){
return null;
}
return ctx.getBean(beanId,clazz);
}
public static ApplicationContext getCtx() {
return ctx;
}
private static void setCtx(ApplicationContext ctx) {
SpringContainer.ctx = ctx;
}
}
这样就获取spring容器了,你可以随便进行操作
工程不关闭,直接写程序SpringContainer.getCtx();也不用每次都初始化容器了
我提个问题,怎么知道spring加载最后一个bean呢?就是何时知道spring初始化完成