我有一个基于Spring的web应用程序。定义了一个包含某些类MyClass的bean,该类也与bean一起传递给MyEndpoint该extends AbstractMarshallingPayloadEndpoint。
MyClass已经将beans中的一些布尔参数设置为true。
如果我的应用程序将此参数编程更改为false,那么下一个请求是也将其设置为false,还是包含一个默认的bean参数- true?
发布于 2012-02-14 22:07:21
这取决于bean的scope (如果没有指定,则默认为singleton )。
singleton作用域,则在应用程序上下文中有该bean的一个实例,每次请求该bean时,都会得到该实例。如果您在具有此作用域的请求中更改它,则更改将被保留。prototype作用域,则每次您向应用程序上下文请求一个新实例时,都会为您提供一个新实例(使用相同的参数创建)。如果在具有此范围的请求中对其进行更改,则在获取此对象的另一个实例时,更改将被忽略。这是最常用的两个(至少我在Spring的时候是这样)。还有其他作用域(请求、会话、全局会话),但您应该阅读documentation on them that Spring provides。
发布于 2012-02-14 22:08:47
如果你想让这个属性根据你的应用程序的业务逻辑动态地改变,而不是只在每个新的请求时被重置(否则请求作用域就会变魔术),考虑工厂方法(特别是Lookup Method Injection)
https://stackoverflow.com/questions/9278046
复制相似问题