在我的Spring应用程序中,下面是场景:
我有一个控制器A
。另一个使用范围B
定义的bean Request
。
@Service("name")
@Scope("request")
class B{
private String name;
public void init(String name){
this.name = name
}
}
和
@Controller
class A{
@Autowired
@Qualifier("name")
B ob;
//using B
}
prototype
。如果我为每个请求打印B的hashCode,我得到相同的输出,这意味着它不会为每个请求注入新对象。ob
引用将指向新的原型对象或请求对象,并且处理的其他请求将引用新的B
对象。最好的方法是获取主要的Spring MVC applciation上下文,然后从方法中获取getBean。这样在本地我可以访问它并获得一个新的实例。但是我该如何解决线程安全问题。答案 0 :(得分:1)
@Controller在Singleton范围内。使用代理bean。
@Service("name")
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
class B{
}