@Bean方法,尽管在不同的类中,却与Bean发生冲突

时间:2019-07-05 01:29:41

标签: spring spring-boot configuration spring-batch javabeans

假设我有两个相同的配置类,期望它们来自@Value标记,该标记映射到相应的属性。由于此类的@Bean注释方法同名,因此我遇到了冲突。既不使用@Scope(“ prototype”)也不使用“ this”调用bean()方法似乎都行不通。

我需要所有方法都是@Beans,以便可以通过spring上下文进行管理。

由于这两种方法都需要使用ClassA和ClassB属性进行配置,因此,继承既不是一种好方法,也不能使用工厂/寄存器将bean动态地注入上下文。

我知道如何解决将bean()名称更改为beanA()和beanB()的问题,但是它必须存在一个更干净的解决方案。

我需要一个更干净的解决方案来避免代码重复。如今,如果将新的设置器添加到ComplexObject,则必须修改classA和ClassB。想象有100个班级..那将是很多工作。

@Configuration
public class ClassA{
....

@Value("${some-config.important-property}")
private String importantPropertyOnlyExistingInThisClass;

@Bean
@Scope("prototype")
public ComplexObject bean(){

   ComplexObject o = new ComplexObject();

    o.setImportantProp(this.importantPropertyOnlyExistingInThisClass)

    return o;
}

@Bean
@Scope("prototype")
public AnotherComplexObject beanUsingBean(){
    AnotherComplexObject aO = new AnotherComplexObject();

    ao.setComplexObject(bean())

    return aO;
}

}


@Configuration
public class ClassB{
....

@Value("${another-config.important-property}")
private String importantPropertyOnlyExistingInThisClass;


@Bean
@Scope("prototype")
public ComplexObject bean(){

    ComplexObject o = new ComplexObject();

    o.setImportantProp(this.importantPropertyOnlyExistingInThisClass)

    return o;
}

@Bean
@Scope("prototype")
public AnotherComplexObject beanUsingBean(){
    AnotherComplexObject aO = new AnotherComplexObject();

    ao.setComplexObject(bean())

    return aO;
}

}

我希望有一种使用java config初始化类似bean的简便方法。

0 个答案:

没有答案