欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring获得ApplicationContext

程序员文章站 2022-05-25 11:52:50
...
1.servlet
Spring获取ApplicationContext的正确方式
      前两天联华对单系统频频出现out of memory的问题,经过层层分析,终于弄明白原来瓶颈出现在Spring获取Bean那一步上。以前的做法是在delegate层ApplicationContext context = new ClassPathXmlApplicationContext("Compare.xml"); 这样我把log4j的debug打开后发现,每做1步操作的时候系统都会重新加载这个xml,重新创建Bean的实例,重新获取url-mapping,这无疑是个及其错误的方式。      研究后发现正确的使用方式是:      首先在web.xml里配置ApplicationContext      <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/applicationContext.xml</param-value>
     </context-param>     <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>     然后在Action中编写如下代码得到Context,(我是覆盖了Struts Action的setServlet方法,也许还有更好的方法)。     public void setServlet(ActionServlet servlet){
         super.setServlet(servlet);
         ServletContext servletContext = servlet.getServletContext();
        WebApplicationContext wac =    WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
         // get yours beans     }     这样在启动服务时已经加载了xml中的配置,而不用每次都重新加载,大大提高了系统的效率

 

2.实现ApplicationContextAware接口 将application注入进去
3.ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
4.ApplicationContext applicationContext = new FileSystemXmlApplicationContext("applicationContext.xml");