`

[java web]关于applicationcontext的知识

阅读更多
今天学习了关于applicationcontext的知识,主要是在代码中遇到了,希望能分享下。
了解集中获取applicationcontext的方式:
方法一:在初始化时保存ApplicationContext对象
代码:
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
ac.getBean("beanId");
这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。
方法二:通过Spring提供的工具类获取ApplicationContext对象
代码:
import org.springframework.web.context.support.WebApplicationContextUtils;
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);
ac1.getBean("Bean1");
ac2.getBean("Bean2");
说明:
这种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后在通过它获取需要的类实例。
上面两个工具方式的区别是,前者在获取失败时抛出异常,后者返回null。
其中 servletContext sc 可以具体 换成 servlet.getServletContext()或者 this.getServletContext() 或者 request.getSession().getServletContext(); 另外,由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出

WebApplicationContext 对象: WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);

另外转一个比较赞成的说法:http://hi.baidu.com/xrmeng/item/3b8eab839f368ae9e596e03e

Spring获取ApplicationContext的正确方式
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中的配置,而不用每次都重新加载,大大提高了系统的效率

分享到:
评论

相关推荐

    基于java的企业级应用开发:Spring的核心容器.ppt

    在Java项目中,会通过ClassPathXmlApplicationContext类来实例化ApplicationContext容器。而在Web项目中,ApplicationContext容器的实例化工作会交由Web服务器来完成。 Web服务器实例化ApplicationContext容器时,...

    JAVA核心知识点整理(有效)

    25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................

    将 Flex 集成到 Java EE 应用程序的最佳实践(完整源代码)

    如果熟悉一点 XML 的知识,编辑 MXML 也并非难事。我们设计的 Employee Management 系统界面的最终效果如下: 图 6. 用 Flex Builder 的可视化编辑器设计界面 本文不打算讨论如何编写 Flex 界面,而是把重点...

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    如果熟悉一点 XML 的知识,编辑 MXML 也并非难事。我们设计的 Employee Management 系统界面的最终效果如下: 图 6. 用 Flex Builder 的可视化编辑器设计界面 本文不打算讨论如何编写 Flex 界面,而是把重点...

    xmljava系统源码-Myioc:这是一个简单的IoC容器实现

    最近进行了大量的JAVA相关知识的学习,对于JAVA知识也算是比较了解了,IoC,反射,设计模式等知识都能讲清楚,但是感觉由于平时使用框架做Web后台开发的原因,明明每天都在接触这些东西,但是又没有真正在使用它们,...

    Spring.3.x企业应用开发实战(完整版).part2

     Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架、REST风格的Web编程模型等。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是JavaWeb应用开发的难度,同时有效提升...

    Spring3.x企业应用开发实战(完整版) part1

     Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架、REST风格的Web编程模型等。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是JavaWeb应用开发的难度,同时有效提升...

    SSH-Jsp期末考试简答题带答案

    SSH-Jsp期末考试简答题带答案是Java EE开发中的重要考试内容,涵盖了SSH(Spring、Struts、Hibernate)框架的基础知识和应用。下面是对该考试简答题的详细解释和知识点总结: 1. 框架的定义和作用 框架是对特定...

    低清版 大型门户网站是这样炼成的.pdf

    6.2.2 实用的bean工厂applicationcontext 365 6.2.3 spring 2.5配置文件详解 367 6.2.4 bean的作用域与生命周期 374 6.2.5 基于xml方式的bean装配 376 6.2.6 基于annotation方式的bean装配 381 6.2.7 基于xml...

    spring学习笔记

    Spring 的开发包:..............................................................................................................6 1.3.2 创建 web 工程引入相应 jar 包:........................................

Global site tag (gtag.js) - Google Analytics