【问题标题】:Spring how to enforce use of bean factory, for prototype beans with runtime argumentsSpring如何强制使用bean工厂,用于带有运行时参数的原型bean
【发布时间】:2018-02-01 08:09:25
【问题描述】:

在我的 spring-boot 应用程序中,我有“普通”的单例 bean,它们通过私有构造函数“自动装配”他们需要的东西。所以不可能在代码的任何地方调用“new”。

但我也有需要创建运行时参数的“原型”bean。要创建这样的 bean,我可以使用这种方法(惰性实例化原型 bean):Spring bean with runtime constructor arguments

问题是使用了构造函数,因此必须是“可见的”。 Spring 有没有办法用私有构造函数创建这样的原型 bean?我想强制使用 BeanFactory 来创建它们。

【问题讨论】:

    标签: spring dependency-injection


    【解决方案1】:

    您可以尝试使用

    的实现来构建您的原型 bean
    factoryBean,public interface FactoryBean<T> {
      T getObject() throws Exception;
      Class<T> getObjectType();
      boolean isSingleton();
    }
    

    所以你可以在里面封装更复杂的逻辑,

    一个完整的例子here

    【讨论】:

    • 谢谢,但这并没有真正的帮助,因为在给出的示例中,每个人都可以创建一个工厂 bean 并调用 getObject。我想通过锁定所有构造函数(私有)来强制使用 DependencyInjection
    猜你喜欢
    • 2016-08-09
    • 2012-01-22
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    相关资源
    最近更新 更多