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即可。
在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即可。