Spring与Struts2集成

1 实例化Spring 的AC(ApplicationContext)

   该如何获取AC呢?

    在Action组件中直接用new 的方法得到肯定是不合理的,因为这样每
    调用一次execute的时候就创建一个新的容器,这样会很快把资源耗尽。

    如果利用工厂模式创建一个容器,例如工具类,只在方法执行的第一次
    回创建出容器实例。但这种方法仍有缺点:但是当第一次执行的时候,
    会实例化所有内容,很慢。

               public class MyAction{
                public String execute(){
                  // ac=new ClassPathXmlApplicationContext("");
             //当调用一次execute的时候就创建一个新的容器,
             // 这样会很快把资源耗尽,所以这种方法是不可以的。
                  ac=AcUtil.getAc();//利用工厂模式来创建一个容器,
              // 但是当第一次执行的时候,会实例化所有内容,很慢。
                   StoreService service=ac.getBean("service");
                   service.sub();
                   return "success";
                }
              }

    因此我们要压迫启动WEB应用的时候实例化AC:
    不使用struts2框架的情形,可以用contextListerner监听web.xml文件
    的加载;
            ServletContextListener
                  contextInitialization(){
                   ac实例化
                   servletContext.setAttribute("",ac);
                  }
                  contextDestory(){}
    
    如果使用spring框架,则可以用声明式实例化AC,在web.xml文件中添加:
           <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/classes/ac.xml</param-value>
           </context-param>
           <listener>
                 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
           </listener>

   2从AC中获取bean
        在servlet中:
        首先获得AC:ac=WebApplicationContextUtils.getWebApplicationContext(servletContext);
        然后从AC中得到Bean。
        Struts2:
          依赖的业务组件,作为Action的属性 由Struts自动依赖注入
        (需要添加struts-spring-plugin.jar插件)
        例如:ac中有个叫做"user"的Bean,那么只需要在Action组件中添加属性user即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值