使用弹簧的条件豆

2022-09-04 07:18:44

我正在尝试编写一个,它将根据其类型为我提供验证器ValidatorFactory

public Validator getNewValidator(ValidatorType type){

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

}

我想用弹簧xml豆定义来写

我可以使用方法注入,但它只允许我创建一个对象,并且该方法确实

不采取任何论据。

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

豆定义。


答案 1

你可以用普通的xml做条件豆注入。“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" />

属性文件的内容将是:

验证器类型 = 验证器类型一

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

<context:property-placeholder location="classpath:app.properties" />

答案 2

对于复杂的情况(比暴露的情况更复杂),Spring JavaConfig可能是你的朋友。


推荐