Spring - 简单地创建Supplier<MyPrototypeBean>

标签 spring dependency-injection prototype factory factory-pattern

对于有关不同 bean 生命周期的问题,我找不到一个好的、简单的解决方案。

我想注入(inject)

@Resource
private Supplier<MessageHandler> messageHandlerFactory;

在每次调用 messageHandlerFactory.get(); 时,在 @Service bean 中创建一个新的 MessageHandler 实例(原型(prototype),具有自己的依赖项)。

我找到的解决方案名为 Method Injection对于这样一个常见的任务来说似乎过于复杂和麻烦。

使用 @Configuration 类最短、最简洁的解决方案是什么?

==更新==

我刚刚意识到供应商应该是 ProviderJSR-330 中所定义.

最佳答案

您可以将 MessageHandler 的范围定义为 Prototype:

@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class MessageHandler {

}

并使用ObjectFactory从单例中获取MessageHandler

@Component
public class YourSingleton {

    @Autowired
    ObjectFactory<MessageHandler> mhFactory;

    public void doSomething() {
        final MessageHandler messageHandler = mhFactory.getObject();
        // messageHandler is a prototype
    }
}

关于Spring - 简单地创建Supplier<MyPrototypeBean>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33021021/

相关文章:

java - 使用 Spring Security 的 JavaFX 中基于角色的内容

spring - MongoDb Spring 存储库的 @Query 命名参数

java.lang.NoClassDefFoundError : org/springframework/beans/factory/config/EmbeddedValueResolver

dependency-injection - 在 xunit 中实例化 IOptions<>

java - 在没有Servlet容器的情况下使用CDI

javascript - 原型(prototype)继承,为什么是实例而不是原型(prototype)?

java - 在 Spring Boot 应用程序中未针对 hibernate 和 spring 过滤 Log4j2 日志级别

dependency-injection - 在 Dagger 中使用不带 @Provides 的 @Singleton

javascript,转换或转换对象

javascript - 关于原型(prototype)继承的澄清