gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:18:04 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com