我在spring中有一个配置文件,我想为春天的特定@Component
的每个实例定义一个构造函数参数。我怎么能这样做?
@Component
public class MyComponent {
public MyComponent(String config) {}
}
在我的application.yml
我想要定义类似的内容:
myconfig:
- config1
- config2
- config3
我想让spring在application.yml
中为每个配置条目创建一个实例。那可能吗?
感谢
答案 0 :(得分:1)
您想要使用一个注释创建3个bean吗?据我所知,这是不可能的。为什么不创建3个子类并使用@Resource注释提取配置值? 顺便说一下:你必须提供一个默认的构造函数,因为那是被调用的构造函数。
答案 1 :(得分:1)
使用Spring无法自动执行此操作。您可能需要单独定义bean,可能是通过子类化为@Mick建议的。首先,从基类中删除@Component注释:
public class MyComponent {
public MyComponent(String config) {}
}
为每个配置创建许多扩展名为@Components:例如:
@Component
public class MyComponentConfig1 extends MyComponent {
public MyComponentConfig1(@Value("myconfig.config1") String config) {
super(config);
}
}
在注册bean时,Spring将值注入到构造函数中。