java - 获取带有动态构造函数参数的 bean

标签 java spring autowired

我有一个 spring 组件,它有一个 @Autowired 构造函数,该构造函数从 @Value 注释中获取参数。像这样:

@Component
public class MyImplClass implement MyInterface
...
public MyImplClass(@Value("${prop.name}") final String name, @Value("${prop.value}") final String value) {
...
}
...

在另一个类中,我像这样 Autowiring 这种类型

@Autowired
protected MyInterface _myInterface;

现在我需要获取 MyInterface bean,并将动态生成的值(在运行时生成)传递给构造函数。我尝试使用 AbstractBeanFactory 但这不起作用。我该怎么做?

最佳答案

您可以在 Spring 配置中生成一个 bean,如下所示:

@Bean
public MyInterface getMyInterfaceBean() {
    // Calculate arg values
    String arg1 = ...;
    String arg2 = ...;
    return new MyImplClass(arg1, arg2);
}

更好的解决方案是更改 MyImplClass 的构造函数以接收配置对象,该对象将知道如何加载所需的值。

关于java - 获取带有动态构造函数参数的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32252377/

相关文章:

java - @InjectMocks,构造函数或初始化 block 抛出异常

java - model.addAttribute ("name",值)和 mv.addObject ("name",值)之间的区别?

java - Spring Autowiring 不起作用

java - 如何使用 Spring Boot Batch 在不同的类中提供不同的 Bean

java - JTextArea对齐

java - 如何使用ListIterator向空列表添加元素?

java - 在 Spring Boot Controller 中使用 GraphQL API

java - spring boot web socket 中的实时通知

Spring 数据锁定

c# - 统一 Autowiring : to use or not to use?