spring单例和多例的问题

本文探讨了Spring MVC框架中控制器、service和dao默认采用的单例模式,并讨论了这些组件作为单例的原因及其适用场景。同时,还介绍了如何通过配置将组件设置为非单例模式。

springMvc的controller默认是单例的,service和dao也默认是单例的


Spring的IOC容器中的对象默认都是单例的。当然也可以将其改为不是单例的。在xml文件中通过<bean>的属性scope="prototype"可以改为非单例的,使用注解的话,@Scope("prototype")。具体某个对象是否应该被设置为单例的,取决于它的作用。比如service, 用于调用dao, 整个系统中一个模块就只需要一个一个,没有必要再每次使用的时候都去new, 所以应该使用单例。同理dao也是如此。但是Spring中的单例模式和pojo的单例并不一样。


有的人说根据bean是否有状态来定义是否为单例,service中有dao的注入,属于service的属性,所以应该定义为非单例,bean的有无状态是根据什么区分的,是根据是否有属性吗


事实上你会发现,dao基本都是单例的。因为dao一旦创建之后,完全没有必要对它进行修改,就是用于CRUD的。


bean的由无状态的区分:http://blog.sina.com.cn/s/blog_796c73ba0101tv3s.html


 

 

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值