Spring bean和应用程序生命周期中更改bean参数

时间:2012-02-14 13:51:14

标签: java spring

我有一个基于Spring的Web应用程序。定义了一个bean,它包含一些类MyClass,它还将bean传递给MyEndpoint extends AbstractMarshallingPayloadEndpoint

MyClass已将bean中的一些布尔参数设置为true

如果我的应用程序将此参数以编程方式更改为false,则下一个请求是否也将其设置为false,否则它将包含默认的bean参数 - true

2 个答案:

答案 0 :(得分:0)

取决于bean的scope(默认为singleton,如果你没有指定)。

  1. 如果它是singleton作用域,那么在应用程序上下文中有一个该bean的实例,并且每次请求该bean时,都会获得该单个实例。如果您在具有此范围的请求中更改它,则将保留更改。
  2. 如果它是prototype范围,则每次向应用程序上下文询问时,都会为您提供一个新实例(使用相同的参数创建)。如果您在具有此范围的请求中更改它,那么当您获得此对象的另一个实例时,将忽略更改。
  3. 这是最常用的两种(至少在我春天的时候)。还有其他范围(请求,会话,globalsession),但您应该阅读documentation on them that Spring provides

答案 1 :(得分:0)

如果您希望此属性根据您的应用程序业务逻辑动态更改,而不是仅在每个新请求上重置(否则请求范围将起作用)考虑工厂方法(尤其是Lookup Method Injection