假设我有以下几个配置类。它们全部自动连接一个基于不同filePath配置的customObject,然后将其用于创建另一个bean。
我对这种方法的关注与以下事实有关:customObject将来可能需要另一个属性(取决于config类)才能起作用。
@Configuration
public ClassA{
@Value("${A.filePath}")
private String filePath;
@Autowired
private CustomObject customObject;
@Bean
public CustomObjectWrapper something(){
customObject.set(filePath);
return CustomObjectWrapperFactory.set(customObject).build();
}
}
@Configuration
public ClassB{
@Value("${B.filePath}")
private String filePath;
@Autowired
private CustomObject customObject;
@Bean
public CustomObjectWrapper something(){
customObject.set(filePath);
return CustomObjectWrapperFactory.set(customObject).build();
}
}
@Configuration
public ClassC{
@Value("${C.filePath}")
private String filePath;
@Autowired
private CustomObject customObject;
@Bean
public CustomObjectWrapper something(){
customObject.set(filePath);
return CustomObjectWrapperFactory.set(customObject).build();
}
}
通读一些有关Annotations和AOP的知识,我想知道是否可以创建一个注释,该注释在配置类实例化之后获取config类的实例,并使用反射调用定义在每个自动连线属性中的每个setter并根据其名称将所需的属性传递给他们。
最终结果将是这样的:
@Configuration
@InstantiateAutowiredObjectsAfterCreation
public ClassA{
@Value("${A.filePath}")
private String filePath;
@Autowired
private CustomObject customObject;
@Bean
public CustomObjectWrapper something(){
return CustomObjectWrapperFactory.set(customObject).build();
}
}