spring是个不错的东东。如果你的项目全部都是采用这个框架的话,那么恭喜你,spring会在容器里帮你管理你所有的对象。如果你的项目是其他框架+spring混合使用,那么spring外部如何去获取spring相信会是个问题。
1。直接获取
直接构造ApplicationContext :
ApplicationContext ctx = new ClasspathXmlApplicationContext("ApplicationContext.xml");
在Web环境里使用ServletContextListener获取ServletContext然后创建一个ApplicationContext的单例就可以在任何地方都用到spring了。
监听器:
public class SpringServletContextListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent arg0) {}
public void contextInitialized(ServletContextEvent arg0) {
SpringContext.initialize(arg0.getServletContext());
}
}
Spring容器管理:
public final class SpringContext {
private static BeanFactory springBeanFactory = null;
public synchronized static boolean initialize(ServletContext servletContext) {
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext (servletContext);
springBeanFactory = (BeanFactory)context;
return true;
}
public static Object getBean(String beanName) throws Exception {
Object object = null;
if (springBeanFactory == null) {
throw new Exception("没有初始化BeanFactory!");
} else {
object = springBeanFactory.getBean(beanName);
}
return object;
}
}
代码测试过可用,但是还没有用LR压一下看看效率。
根据上面的代码可以基本解决所有获取spring的问题咯。