使用AOP初始化对象

时间:2019-07-19 02:33:17

标签: java spring reflection javabeans aop

假设我有以下几个配置类。它们全部自动连接一个基于不同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();
    }


}

0 个答案:

没有答案