Spring支持的bean作用域
2013-12-26 17:31
417 查看
singleton 容器只为bean创建一个实例。 客户端每次请求都返回一个共享实例。 客户端不能控制bean的生命周期。 由容器控制bean的产生,销毁。 prototype 每次请求bean时。都会创建一个新的实例。 客户端每次请求(调用getBean(“”)方法)都产生一个新的实例。 实例化后,完全交给客户端代码管理,容器不再追踪其生命周期。并不知道bean何时销毁。 request 用于web应用,bean在一次请求中有效。 session 用于web应用,bean在整个会话中有效。
使用经验:
0. Singleton作用域是Spring中的缺省作用域。
1. 结合Struts每次请求都产生一个新的action bean,所以结合Struts的使用,就用prototype。
2. 典型情况下,DAO不会被配置成prototype,因为一个典型的DAO不会持有任何会话状态,因此应该使用singleton作用域。
3. 如果你用"singleton"属性那么就必须在那个文件里引用'spring-beans.dtd' DTD。 如果你用"scope"属性那么必须 在那个文件里引用'spring-beans-2.0.dtd' DTD 或'spring-beans-2.0.xsd' XSD。
4. request、session以及global session仅仅在使用基于web的Spring ApplicationContext实现(如XmlWebApplicationContext)时有用,如果在普通的Spring IoC容器中,比如像XmlBeanFactory或ClassPathXmlApplicationContext,尝试使用这些作用域,你将会得到一个IllegalStateException异常(未知的bean作用域)。
5. 对所有有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。
相关文章推荐
- 第三十一天【java虐我千百遍,我待java如初恋】
- [Leetcode] Longest Substring Without Repeating Characters (Java)
- eclipse安装maven
- java解析Xml
- ClientAbortException: java.net.SocketException: Connection reset by peer
- spring security的tag标签
- java多线程
- java来打开默认的一些客户端程序
- java23种设计模式(追妹妹版)
- java.lang.NoClassDefFoundError: org/springframework/ui/velocity/VelocityEngi
- java中26个提示性能的地方
- 如何用Java将excel数据导入数据库
- perforce could not check out in eclipse plugin
- Eclipse快速搜索教程
- Java基础学习1-环境搭建
- java环境变量配置
- Java/JS获取flash高宽
- [Leetcode] Merge k Sorted Lists (Java)
- Java基础15--集合框架
- eclipse配置新环境