`
longxiaoyan
  • 浏览: 75923 次
  • 性别: 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都将使用第一次生成的这个实例,即整个过程中都只有这一个单例存在。
分享到:
评论

相关推荐

    maven3+struts2+spring+ibatis

    这个属于与Spring整合的问题,Spring容器在初始化对象的时候会根据bean的scope配置来考虑是重新建立一个对象,还是继续使用原来的对象,拿struts2的action的bean来说,如果scope这个参数没有配置,默认就是单例,即...

    maven3.0+struts+spring+hibernate

    这个属于与Spring整合的问题,Spring容器在初始化对象的时候会根据bean的scope配置来考虑是重新建立一个对象,还是继续使用原来的对象,拿struts2的action的bean来说,如果scope这个参数没有配置,默认就是单例,即...

    spring.doc

    1 Spring基本特征 6 2 Spring的组成 6 ...6 Struts2+spring+hibernate 141 6.1 需要添加的jar包 141 6.2 Spring融合web服务器 141 6.3 struts.xml文件 143 6.4 OpenInSessionView 143 拓展: 144 实例: 146

    Spring入门

    简单的ppt和例子。1、轻松实现软件各层之间的解耦:利用依赖注入技术,降低组件之间的耦合度。...6、 Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts2等,更便于应用的开发。

    Spring基础与快速入门

    2 容器:Spring提供容器功能,容器可以管理对象的生命周期,对象与对象之间的依赖关系。你可以写一个配置文件(通常是xml文件),在上面定义对象的名字,是否是单例,以及设置与其他对象的依赖关系。那么在容器启动...

    我的博客园

    并在SpringIoC容器中使用原型模式创建struts2框架中的每一个Action实例对象以及使用单例模式创建业务逻辑层接口实现类的实例对象。在业务逻辑层中使用SpringIoC容器中的AOP的cglib代理模式配置事务管理。 在数据库...

    Spring面试题

    在对由三部分组成的 Spring 系列 的第 1 部分进行总结时,我使用了一个示例,演示了如何通过 Spring IOC 容器注入应用程序的依赖关系(而不是将它们构建进来)。 我用开启在线信用帐户的用例作为起点。对于该实现,...

    Java求职面试宝典各大公司常考知识点

    Struts+Hibernate+Spring面试题合集及答案 Struts+Hibernate+Spring面试题合集 1 1. Hibernate部分 2 1.1. Hibernate工作原理 2 1.2. 什么是Hibernate的并发机制?怎么处理并发问题? 2 1.3. Hibernate自带的分页...

    Java学习笔记-个人整理的

    {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {1.4.1}整数与浮点数}{23}{subsection.1.4.1} {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{...

    IT 简历模版

     ◆ 框架技术:熟练使用Struts1.x、Struts2.x 、Hibernate、Spring ◆ 表 现 层:熟练掌握JSP、HTML、JavaScript、EL表达式和Struts标签库等,熟悉Ajax、DIV+CSS技术,JQuery,了解XML ◆ 编程工具:熟练使用My ...

    面向对象初学者必须掌握的几种设计模式

    观察者模式 Observer:Swing中的事件模型 工厂模式 Factory:在JDK中遍地都是,比如JDBC、JNDI等,是学习Spring的基础 命令模式 Command:Struts框架的基石 单例模式 Singleton:最简单的设计模式,大量...

    erp:1.SSH框架整合首先整体系统架构基于Spring为基础平台struts2负责页面展示,动作对象交由Spring管理,配置scope =“ prototype”控制为产生的对象为非单例对象Hibernate3负责数据持久化,使用Spring提供的hibernate模板完成数据持久化。各种封装)表现层捕获基类,封装分页参数和各种常用方法,包括请求与响应对象的获取,会话数据的操作,登陆用户数据的获取等业务层封装通用操作接口,数据层封装通用持久性如果重新添加反射注解,可以真正意义上做到数据层通用操作0代

    erp 这是我近期做的一个erp的系统的源代码

    人事OA管理系统

    spring 默认注入为单例模式 如有些action不需要刻意在bean标签加入scope="prototype"属性 内部私有属性定义时最好赋初值(尤其字符串)这样对后面判断有益 如果action无法传值 刻意考虑用session传值 2013-08-29 ...

    SMART系统-系统框架设计与开发

    在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...

    java面试题库2021.pdf

    目录 一、 JavaSE 部分 1、 Java 基础 ①Java 基础部分(基本语法, Java 特性等) ②关键字 ③面向对象 ...①单例模式 3、 行为型模式 ①策略模式 ②观察者模式 4、 所有模式汇总 十、 场景题 十一、 UML

    SpringMVC面试专题.pdf

    2、Spring MVC 的优点: 3、SpringMVC 工作原理? 4、SpringMVC 流程? 6、SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决? 7、如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些...

    JAVA SMART系统-系统框架设计与开发(源代码+论文).rar

    在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...

    SMART系统-系统框架设计与开发(JAVA)

    在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...

    java面试题

    Struts2只是起到一个数据接收和转接的功能,就是Controller控制器,而传来数据的页面叫view显示层,Struts2将数据提交给进行处理的类叫Model模型层,专门进行数据处理和数据库的连接。 heap和stack有什么区别? 答:...

Global site tag (gtag.js) - Google Analytics