关于SpringMVC Controller单例 然后多个线程在同一个Controller类中请求相同的方法, 线程是否安全? 如果安全然后什么时候我们会使用“原型范围”? 因为单身人士非常好
答案 0 :(得分:0)
在讨论bean范围时,Spring文档声明:
...对所有有状态bean使用原型范围,对无状态bean使用单例范围。
是的,控制器的局部变量(在方法中声明的那些)是线程安全的,但是它的实例变量(类级变量)不在单例范围的bean中。如果要将状态保持在控制器级别,请使用原型范围。
此外,当控制器依赖于原型范围的bean时,事情会变得复杂。一旦设置了依赖关系,一旦创建了一个新的原型范围的bean,就不会重置它,从而在一开始就破坏了原型范围内的bean依赖关系的目的。
您不能将原型范围的bean依赖注入到您的单例bean中,因为当Spring容器实例化单例bean并解析并注入其依赖项时,该注入只发生一次。如果您需要在运行时多次使用原型bean的新实例,请参阅方法注入。
您可能需要注意方法注入,因为它是一个相当高级的功能。有人可能想要使用原型范围控制器的另一个原因是什么?
但是,请考虑使用原型范围控制器可能会降低应用程序的性能。