我正在使用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