使用spring的条件bean

She*_*har 13 java spring dependency-injection

我正在尝试写一个ValidatorFactory会根据其类型给我一个验证器

public Validator getNewValidator(ValidatorType type){

    switch:
         case a : new Validator1();
         break;
          case b : new Validator2();
        break;

}
Run Code Online (Sandbox Code Playgroud)

我想用spring xml bean定义来编写

我可以使用方法注入,但它只允许我创建一个对象,而方法可以

不接受任何争论.

我不想使用FactoryBean..我只是想看看我们是否可以使用spring xml来做到这一点

bean的定义.

gui*_*ido 22

你可以使用普通的xml进行条件bean注入."ref"属性可以由属性文件中的属性值触发,从而根据属性值创建条件bean.此功能未记录,但它完美无缺.

<bean id="validatorFactory" class="ValidatorFactory">
<property name="validator" ref="${validatorType}" />
</bean>

<bean id="validatorTypeOne" class="Validator1" lazy-init="true" />
<bean id="validatorTypeTwo" class="Validator2" lazy-init="true" />
Run Code Online (Sandbox Code Playgroud)

并且属性文件的内容将是:

validatorType = validatorTypeOne

要在xml中使用属性文件,只需将此上下文添加到spring配置的顶部即可

<context:property-placeholder location="classpath:app.properties" />
Run Code Online (Sandbox Code Playgroud)


jpl*_*ain 3

对于复杂的情况(比公开的更复杂),Spring JavaConfig可能是您的朋友。