我正在使用Spring MVC创建一个小型验证应用程序。我对Spring MVC很新,希望确保我想要的是可能的。获取所有带注释的类并调用每种方法以获取返回值
我简化了我的问题。
我已经设置了一个控制器,当一个URL被执行时会被调用。 localhost/validate/{SOME TEXT}
{SOME TEXT}
将值发送到我创建的所有验证类。 我现在有4个班,其确实验证,并返回有关验证过程中所发生的事情的另一个对象数据
4验证类:
CreditCardValidator
AddressValidator
ZipcodeValidator
AccountNumberValidator
我有一个主控制器豆调用,当我想要的将字符串传递给每个类,并从每个类返回的对象进行存储,然后最终将所有结果发回给响应。
通常,我会在没有Spring的情况下通过创建每个验证类实现的接口来执行此操作。然后迭代类的列表并执行一个方法。
这样做的问题是,无论何时我需要添加一个新的验证类,我都需要注册它,以便请求可以使用它。这涉及到修改现有的类。
因为我在这个应用程序中使用Spring很快,所以我想知道这是否可以通过Spring和注释类来完成。
我想创建一个自定义注释,每个验证类都有,然后使用spring组件扫描来获取类。这将允许我在不修改现有代码的情况下创建新的验证。
以下是我想要做的。
@Controller
public class StringValidationController {
@RequestMapping(value = "/validate/{text:.+}", method = RequestMethod.GET)
public ModelAndView index(@PathVariable("text") String text) {
ModelAndView model = new ModelAndView();
model.setViewName("index");
model.addObject("result", getListOfValidatedData());
return model;
}
public List getListOfValidatedData(){
//Scan for IValidator annotation
//call each concrete class and pass in text
// get object with has validation information in it
}
}
也许这将有助于:http://www.javacodegeeks.com/2013/07/spring-mvc-custom-validation-annotations.html – yname 2014-12-06 06:40:48