首页 > spring mvc 的controller 一般都是单例的?

spring mvc 的controller 一般都是单例的?

如果加上 @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

【热门文章】
【热门文章】