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都将使用第一次生成的这个实例,即整个过程中都只有这一个单例存在。
分享到:
相关推荐
这个属于与Spring整合的问题,Spring容器在初始化对象的时候会根据bean的scope配置来考虑是重新建立一个对象,还是继续使用原来的对象,拿struts2的action的bean来说,如果scope这个参数没有配置,默认就是单例,即...
这个属于与Spring整合的问题,Spring容器在初始化对象的时候会根据bean的scope配置来考虑是重新建立一个对象,还是继续使用原来的对象,拿struts2的action的bean来说,如果scope这个参数没有配置,默认就是单例,即...
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
简单的ppt和例子。1、轻松实现软件各层之间的解耦:利用依赖注入技术,降低组件之间的耦合度。...6、 Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts2等,更便于应用的开发。
2 容器:Spring提供容器功能,容器可以管理对象的生命周期,对象与对象之间的依赖关系。你可以写一个配置文件(通常是xml文件),在上面定义对象的名字,是否是单例,以及设置与其他对象的依赖关系。那么在容器启动...
并在SpringIoC容器中使用原型模式创建struts2框架中的每一个Action实例对象以及使用单例模式创建业务逻辑层接口实现类的实例对象。在业务逻辑层中使用SpringIoC容器中的AOP的cglib代理模式配置事务管理。 在数据库...
在对由三部分组成的 Spring 系列 的第 1 部分进行总结时,我使用了一个示例,演示了如何通过 Spring IOC 容器注入应用程序的依赖关系(而不是将它们构建进来)。 我用开启在线信用帐户的用例作为起点。对于该实现,...
Struts+Hibernate+Spring面试题合集及答案 Struts+Hibernate+Spring面试题合集 1 1. Hibernate部分 2 1.1. Hibernate工作原理 2 1.2. 什么是Hibernate的并发机制?怎么处理并发问题? 2 1.3. Hibernate自带的分页...
{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}{...
◆ 框架技术:熟练使用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 这是我近期做的一个erp的系统的源代码
spring 默认注入为单例模式 如有些action不需要刻意在bean标签加入scope="prototype"属性 内部私有属性定义时最好赋初值(尤其字符串)这样对后面判断有益 如果action无法传值 刻意考虑用session传值 2013-08-29 ...
在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...
目录 一、 JavaSE 部分 1、 Java 基础 ①Java 基础部分(基本语法, Java 特性等) ②关键字 ③面向对象 ...①单例模式 3、 行为型模式 ①策略模式 ②观察者模式 4、 所有模式汇总 十、 场景题 十一、 UML
2、Spring MVC 的优点: 3、SpringMVC 工作原理? 4、SpringMVC 流程? 6、SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决? 7、如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些...
在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...
在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库...
Struts2只是起到一个数据接收和转接的功能,就是Controller控制器,而传来数据的页面叫view显示层,Struts2将数据提交给进行处理的类叫Model模型层,专门进行数据处理和数据库的连接。 heap和stack有什么区别? 答:...