使用动态构造函数参数获取bean

时间:2015-08-27 14:38:16

标签: 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) {
...
}
...

在另一个班级我自动装配这种类型

@Autowired
protected MyInterface _myInterface;

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

1 个答案:

答案 0 :(得分:1)

您可以在Spring配置中生成一个bean:

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

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