java - 带有构造函数参数和注入(inject)依赖项的 Spring Prototype bean

标签 java spring

我有一个 bean,它具有一些单例依赖项,但也有实例独占参数。构造函数类似于:

@Autowired
public PrototypeBean(CustomAttribute attribute, Service1 service1, Service2 service2) {
[...some code...]
}

在上面的示例中,service1service2 是单例、Spring 依赖项,必须在创建 bean 时注入(inject)。

在另一个类上,我有一个 ObjectProvider ,它应该创建上面原型(prototype) bean 的实例。我正在尝试这样的事情:

objectProvider.getObject(attribute);

但是 Spring 返回一个错误,指出它找不到与参数匹配的构造函数。

我可以轻松地将代码从基于构造函数的注入(inject)更改为基于属性的注入(inject),并且它将起作用。但这不是一个好的做法,并且会使测试更难编写。

有没有办法将 ObjectProvider 与同时具有自定义参数和依赖项的构造函数一起使用?

最佳答案

你可以这样做:

@Configuration
static class PrototypeBeanConfiguration {
   private final Service1 service1;
   private final Service2 service2;

   public PrototypeBeanConfiguration(Service1 service1, Service2 service2) {
      this.service1 = service1;
      this.service2 = service2;
   }

   @Bean
   @Scope(value = BeanDefinition.SCOPE_PROTOTYPE)
   public PrototypeBean(CustomAttribute attribute) {
      return new PrototypeBean(attribute, service1, service2);
   }
}

关于java - 带有构造函数参数和注入(inject)依赖项的 Spring Prototype bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56282280/

相关文章:

java - 安卓 : How to get view class from a view to use with instanceOf

spring - MockRestServiceServer 未正确验证请求

java - 如何使用 jSTL 迭代 map ?

java - 使用 Sigar 获取磁盘列表以读取 Java 中的可用空间

spring - 带卡夫卡消费者的断路器

spring - MocMVC 给出 HttpMessageNotReadableException

spring - 为什么需要 Autowiring ? Autowiring 的概念如何解释?

java - Websphere Commerce 7 自定义服务调用

java - Ajax 函数始终返回 0 并且不会继续进行

java - "properly"接到电话时如何发送短信?