我有一个servlet,它根据XML文件中包含的人的地址对XML文件进行验证。验证是针对每个州的,所以我有几个验证器的实现,但我不知道在每次解析请求之前要使用哪一个。
我正在使用Spring,现在我正在使用以下内容获取正确的验证器:
Validator validator = applicationContext.getBean(this.state + "Validator");
这似乎打破了一些控制倒置。我想把它移到一个基本上做同样事情的工厂类,但将它抽象到工厂:
@Component
public class ValidatorFactory {
@Autowired
ApplicationContext applicationContext;
public Validator getValidator(String state) {
return applicationContext.getBean(state + "Validator");
}
}
似乎应该有更好的方法在运行时获取正确的bean而不使用getBean()。有没有人有任何建议?
答案 0 :(得分:2)
您可以使用地图:
@Component
public class ValidatorFactory {
@Autowired
Map<String,Validator> validators;
public Validator getValidator(String state) {
return validators.get(state + "Validator");
}
}
您可以通过Spring预先填充所需bean的地图。