`
longxiaoyan
  • 浏览: 77316 次
  • 性别: Icon_minigender_1
  • 来自: 桂-京
社区版块
存档分类
最新评论

spring、struts2单例总结

    博客分类:
  • J2EE
阅读更多
1.前提:struts2、spring2.x环境

2.例子
public class TestAction extends ActionSupport {
	private TestManager t1;
	private TestManager t2 = new TestManager();

	@Override
	public String execute() throws Exception {
		System.out.println("---------");
		System.out.println("testManager1:" + t1 + ",i=" + t1.getIndex());
		System.out.println("testManager2:" + t2 + ",i=" + t2.getIndex());
		return null;
	}

	@Autowired
	public void setT1(TestManager t1) {
		this.t1 = t1;
	}
}


@Component
//@Scope("prototype")
public class TestManager {
	private int i;

	public int getIndex() {
		return ++i;
	}
}


用浏览器连续访问3次action控制台显示结果:
---------
testManager1:cn.com.super.service.TestManager@1a70128,i=1
testManager2:cn.com.super.service.TestManager@13cfd6e,i=1
---------
testManager1:cn.com.super.service.TestManager@1a70128,i=2
testManager2:cn.com.super.service.TestManager@5569ba,i=1
---------
testManager1:cn.com.super.service.TestManager@1a70128,i=3
testManager2:cn.com.super.service.TestManager@f4f9c,i=1


通过对注入的t1和new出来的t2两个实例变量的比较可知,t1在3次访问中只有一个实例,而t2则每次访问都是不同的实例。由此可知:
1. struts2创建的action为多例。
2. 通过Autowired注入的bean默认为单例。
3. 如果要让bean为多例可以添加注解:@Scope(“protorype”)。
4. 若注入的bean为单例需要注意线程安全问题,尽量不要使用成员变量。
5. 一个bean注入生成第一个实例后,以后不管在那个类中注入此bean都将使用第一次生成的这个实例,即整个过程中都只有这一个单例存在。
分享到:
评论

相关推荐

    struts2-spring-plugin-2.3.4.jar

    而使用Struts 2-Spring 插件,Action 可以被配置为单例或多例模式,由Spring 容器控制其生命周期,从而优化性能。 6. **国际化与主题支持**:Spring 提供了强大的国际化和主题支持,整合后,Struts 2 的Action 可以...

    spring struts hibernate面试题

    - **线程模式**:Struts1的Action是单例的,需要保证线程安全;Struts2为每个请求创建新的Action实例,避免了线程安全问题。 - **Servlet依赖**:Struts1的Action直接依赖Servlet API,而Struts2则弱化了这种依赖...

    spring、Struts2、hibernate常见面试题

    本文将详细解释 Spring、Struts2、Hibernate 面试题中的知识点,涵盖了 MVC 模式、Struts1.2 和 Struts2.0 的区别、单例模式、Servlet 依赖、可测试性、项目中使用 SSH 的原因、Struts 和 Spring 的继承关系、实现...

    Spring框架以及与Struts、Mybatis的整合

    2. **单例和多例**:通过配置文件可以控制Bean是单例还是多例,单例模式下Spring容器关闭时对象才会销毁,多例模式下对象由JVM的垃圾回收机制管理。 通过上述知识点的介绍,我们可以看到Spring框架在现代Java开发中...

    STRUTS2+SpringLib架包

    Struts2和Spring是两个非常重要的Java开源框架,它们在企业级Web开发中扮演着核心角色。Struts2是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,而Spring则是一个全面的Java应用程序框架,尤其以其...

    Struts2+Spring简单示例

    通过使用Spring插件,我们可以让Spring管理Struts2的Action,这样Action实例的生命周期由Spring容器控制,可以实现Action的单例或多例模式。同时,Spring可以注入Action所需的其他服务,如DAO、Service等,使得整个...

    Spring-整合-Struts2

    ### Spring 整合 Struts2 详解 #### 整合目标 在本教程中,我们的主要目标是通过Spring框架的IOC容器来管理Struts2的Action对象。这将有助于更好地控制依赖关系,使得应用程序结构更加清晰,易于维护。 #### 整合...

    单例多例模式

    例如,在Struts2中,action必须用多例,因为action本身含有请求参数的值,即可改变的状态。而在Struts1中,action则可以用单例,因为请求参数的值是放在actionForm中,而非action中的。 五、注意事项 并不是说...

    struts2-spring-plugin-2.2.1.1.jar

    Struts2-Spring-Plugin-2.2.1.1.jar是Apache Struts 2框架的一个重要插件,主要用于整合Struts 2与Spring框架。这个插件在开发基于SSH(Struts 2、Spring、Hibernate)的企业级应用时扮演着关键角色。SSH是一个流行...

    spring+struts2+ibatis整合

    2. **配置Struts2**:在struts.xml中配置Action,设置结果类型,通常使用Spring插件实现Action的实例化,避免单例模式下的线程安全问题。 3. **配置iBatis**:配置SqlMapConfig.xml,定义数据源、事务管理器,编写...

    struts2-spring-2.5.14.1.jar

    2. **Action实例管理**:Spring可以管理Struts2 Action的生命周期,包括单例或多例模式的选择,提供更灵活的控制。 3. **结果映射**:Spring可以帮助配置Struts2的结果映射,使得视图层的跳转更加简洁。 4. **AOP...

    struts2+spring3+hibernate4

    Struts2、Spring3和Hibernate4是Java Web开发中的三个核心框架,它们分别负责MVC模式中的动作控制、依赖注入和服务层管理以及持久化层的数据操作。这篇博客文章结合这三个框架,探讨了如何构建一个完整的Java Web...

    struts1和spring整合做的登录

    2. **配置Spring**:创建Spring的配置文件(如`applicationContext.xml`),定义Bean并进行依赖注入。例如,你可以定义Action类及其依赖的服务接口和实现类。 ```xml ``` 3. **配置Struts1**:在Struts的配置...

    struts2知识总结

    Struts1的Action采用单例模式,需要确保线程安全,而在Struts2中,每个请求都会创建一个新的Action实例,消除了线程安全问题。Struts2的Action不依赖Servlet API,提高了可测试性,可以直接或间接访问请求和响应,但...

    在struts2中集成Spring共2页.pdf.zip

    - Spring容器可以作为Action实例的工厂,Struts2的配置可以声明Spring管理的Action类,这样每次请求都会从Spring容器中获取Action实例,确保每个请求都拥有独立的对象,符合单例模式的要求。 3. **Spring的AOP与...

    spring和Struts2注解文档

    在IT领域,特别是Java开发框架中,Spring和Struts2都是极为重要的技术栈,它们各自通过注解(Annotation)机制提供了强大的功能扩展性和代码简洁性。以下是对Spring和Struts2注解的深入解析和使用指南。 ### Spring...

    Struts2与Spring2.5的整合

    Struts2 和 Spring2.5 是两个非常流行的 Java Web 开发框架,它们分别负责表现层和业务层的管理。在实际开发中,为了实现更高效、更灵活的应用,常常需要将这两个框架进行整合。整合的主要目的是利用 Spring 提供的...

    struts2+hibernate+spring整合

    总结来说,Struts2、Hibernate和Spring的整合涉及的主要步骤包括: 1. 配置Spring的`ContextLoaderListener`,加载Spring配置文件。 2. 配置Struts2的`FilterDispatcher`,处理HTTP请求。 3. 在Struts2配置文件中...

    spring与struts整合开发包

    Spring的DI可以替换Struts的ActionServlet中的单例模式,使得每个请求都可以有独立的Action实例,更利于多线程环境。同时,Spring的AOP可以用于Struts的异常处理和事务管理。 4. **整合步骤**: - **配置Spring**...

    struts2结合spring的jar包.rar

    - **Spring的依赖注入(DI)**:Spring通过DI可以管理Struts2 Action的生命周期,提供对象实例化、初始化、销毁等操作,减轻了对单例模式的依赖。 - **Spring的AOP**:Spring的AOP可以用来实现事务管理、权限控制等...

Global site tag (gtag.js) - Google Analytics