使用spring的条件bean

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

 public Validator getNewValidator(ValidatorType type){ switch: case a : new Validator1(); break; case b : new Validator2(); break; } 

我想用spring xml bean定义来编写

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

不接受任何争论。

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

bean的定义。

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

      

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

validatorType = validatorTypeOne

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

  

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

如果您使用注释(@ @Autowired ,@ @Qualifier等)而不是xml,则无法使条件bean工作(至少在当前版本3中)。 这是由于@Qualifier不支持表达式

 @Qualifier(value="${validatorType}") 

有关更多信息, 请访问https://stackoverflow.com/a/7813228/418439

我的要求略有不同。 在我的情况下,我希望在生产中编码密码,但在开发中使用纯文本。 此外,我没有访问父bean parentEncoder 。 这就是我设法实现的目标:

            

当然,我在属性文件中定义了password.encoding ,可能的值为shaplainText

你应该能够做到这一点:

     

当然,它在下面使用自动配置的FactoryBean ,但您可以避免代码中的任何Spring依赖项。