使用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
,可能的值为sha
或plainText
。
- Java Generics:在运行时是否保留了有关generics类型的任何元信息?
- 如何在Spring应用程序上下文中扩展已定义的列表和映射?
- 将一组依赖项深深嵌套在依赖关系图中
- JavaFX fxml – 如何将Spring DI与嵌套的自定义控件一起使用?
- 抽象超类中的Generic @Inject’d字段
- 被测单元:Impl还是接口?
- ClassCastException:org.springframework.orm.jpa.EntityManagerHolder无法强制转换为org.springframework.orm.hibernate5.SessionHolder
- 如何在JavaFX中使用Spring?
- 如何让google guice注入一个自定义记录器,比如一个commons-logging或log4j logger