如果加上 @Scope("prototype")
变成多例,会是什么效果?为什么要这样设计。
通常单例就够用了,性能略好一点点,不过单例对象就不能注入一些 scope 较小的其他对象了。
如果这么写
@Controller
@Scope("request")
那么你的 controller 就可以注入 request, session, singleton 范围的对象,作为它的某个 field。
如果这么写
@Controller
@Scope("session")
那么你的 controller 就只能注入 session, singleton 范围的对象。(只是举例,不要把 controller 放到 session 里,session 只适合存放会话数据)
如果写 @Scope("prototype")
,就近似于 request,具体跟 Spring MVC 的实现有关。
如果是单例,就只能注入 singleton 范围的对象,你硬要注入别的也未必不行,但是会有逻辑错误。
顺便吹一下我的博文《对象设计要考虑有效范围》 http://.com/blog/sorra/1190000000666877