获取所有带注释的类并调用每个方法以获取返回值

时间:2014-12-06 01:47:18

标签: spring-mvc

我正在使用Spring MVC创建一个小型验证应用程序。我是Spring MVC的新手,我想确保我想要的东西是可能的。

我简化了我的问题。

我已经设置了一个控制器,在执行URL时会调用该控制器。 localhost/validate/{SOME TEXT}

{SOME TEXT}值将发送到我创建的所有验证类。 我目前有4个类进行验证,并返回另一个关于验证期间发生的事件的对象数据

4个验证类是:

CreditCardValidator
AddressValidator
ZipcodeValidator
AccountNumberValidator

我有一个主控制器bean,在调用时我希望将字符串传递给每个类,并从每个类返回的对象进行存储,最后所有结果都会在响应中发回。

通常,我会在没有Spring的情况下通过创建每个验证类实现的接口来执行此操作。然后迭代类列表并执行方法。

这样做的问题是,每当我需要添加一个新的验证类时,我都需要注册它,以便请求可以使用它。这涉及修改现有的类。

由于我在这个应用程序中大量使用Spring,我想知道是否可以通过Spring和带注释的类来实现。

我正在考虑创建每个验证类所具有的自定义注释,然后使用spring component-scan来获取类。这样我就可以在不修改现有代码的情况下创建新的验证。

以下是我要做的事情。

@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
    }

}

1 个答案:

答案 0 :(得分:0)

如果您希望通过Spring或here完成,如果您可以使用第三方解决方案,请参阅here