我有一个基于Spring的Web应用程序。定义了一个bean,它包含一些类MyClass
,它还将bean传递给MyEndpoint
extends AbstractMarshallingPayloadEndpoint
。
MyClass
已将bean中的一些布尔参数设置为true
。
如果我的应用程序将此参数以编程方式更改为false,则下一个请求是否也将其设置为false
,否则它将包含默认的bean参数 - true
?
答案 0 :(得分:0)
取决于bean的scope
(默认为singleton
,如果你没有指定)。
singleton
作用域,那么在应用程序上下文中有一个该bean的实例,并且每次请求该bean时,都会获得该单个实例。如果您在具有此范围的请求中更改它,则将保留更改。prototype
范围,则每次向应用程序上下文询问时,都会为您提供一个新实例(使用相同的参数创建)。如果您在具有此范围的请求中更改它,那么当您获得此对象的另一个实例时,将忽略更改。这是最常用的两种(至少在我春天的时候)。还有其他范围(请求,会话,globalsession),但您应该阅读documentation on them that Spring provides。
答案 1 :(得分:0)
如果您希望此属性根据您的应用程序业务逻辑动态更改,而不是仅在每个新请求上重置(否则请求范围将起作用)考虑工厂方法(尤其是Lookup Method Injection)