春季豆的Java范围和生命周期

时间:2018-09-28 22:32:04

标签: java spring spring-mvc servlets spring-security

我有一个问题,在Spring Web应用程序中,当我们每次调用单例时声明一个bean单例并在bean原型内声明时,原型bean将会是相同的,但是如果我想在控制器,如果其他组件是单例的,那么最后一个组件如何成为原型? 模式是此单例控制器->单例外观->原型服务 感谢你。

1 个答案:

答案 0 :(得分:2)

如果我对您的理解正确,那么可以使用许多选项。最受欢迎:

1. 作用域代理。将此注释添加到原型bean:

@Scope( value = ConfigurableBeanFactory.SCOPE_PROTOTYPE, proxyMode = ScopedProxyMode.TARGET_CLASS)

2. @Lookup注释,其中包含方法注入:

@Component
public class SingletonFacade {

   @Lookup
   public PrototypeBean getPrototypeService() {
       return null;
   }
}

3. ObjectFactory接口

@Componenet
public class SingletonFacade {

   @Autowired
   private ObjectFactory<PrototypeService> prototypeBeanObjectFactory;

   public PrototypeBean getPrototypeInstance() {
       return prototypeBeanObjectFactory.getObject();
   }
}

您可以在此处找到更多信息-https://www.baeldung.com/spring-inject-prototype-bean-into-singleton