Среда проверки для бизнес-приложения, созданного на основе Spring 2.5 - PullRequest
0 голосов
/ 11 сентября 2008

Что может быть лучшей стратегией для написания слоя проверки для бизнес-приложений среднего уровня, построенных на Spring 2.5

Я знаю, что Spring предоставляет средство, где мы можем реализовать интерфейс Validator и написать логику валидации в методе validate. Но это будет ограничено только веб-запросами, поступающими через Spring Controller.

Я хотел бы разработать систему валидации, которая может использоваться при вызовах веб-сервисов.

Другими словами, инфраструктура может оставаться и вызываться независимо без необходимости реализации интерфейса Validator, а затем она также может автоматически интегрироваться в поток Spring MVC.

Надеюсь, вы поняли мою точку зрения.

Ответы [ 2 ]

1 голос
/ 11 сентября 2008

Платформа Spring Validation может использоваться вне Spring MVC. Какой стек WebServices вы используете? Если вы используете Spring-WS (стек Web-сервисов Spring), у них есть специальные инструкции по настройке валидатора здесь:

http://static.springframework.org/spring-ws/sites/1.5/reference/html/server.html#d0e2313

Если вы используете какой-либо другой стек, вероятно, будет проще реализовать что-то для этого стека (или найти такой), который будет использовать среду валидации Spring.

0 голосов
/ 16 сентября 2008

Напомним, что интерфейс Validator определяет два метода:

boolean supports(Class clazz)
void validate(Object target, Errors errors)

Object target - это объект формы, который представляет собой весь объект, представляющий страницу, которая будет показана пользователю. Экземпляр Errors будет содержать ошибки, которые будут отображаться пользователю.

Итак, вам нужно определить посредника, который может быть вызван с указанными в вашей форме особенностями, которые вы хотите проверить, и такими же, как в веб-службе. Посредник может принимать одну из двух форм:

  1. (вероятно, лучший):

    public interface ErrorReturning { 
        public void getErrors(Errors errors);
    }
    
  2. (это может быть ужасно быстро, если будет добавлено более двух состояний):

    public interface ValidationObject {
        public Errors getErrors(Errors errors);
        public Object getResultOfWebServiceValidation();
    }
    

Я бы предложил реализовать первый подход. При обычной проверке передайте объект, который можно напрямую использовать для проверки веб-службы, но разрешите ему реализовать метод getErrors(). Таким образом, в вашем валидаторе для Spring, внутри вашего метода валидации вы можете просто вызвать:

getCommonValidator().validate(partialObject).getErrors(errors);

Ваш веб-сервис будет основан на вызовах getCommonValidator().validate(partialObject) для прямого объекта, который будет использоваться в веб-сервисе.

Второй подход подобен этому, хотя интерфейс позволяет возвращать объект только из заданного объекта для объекта проверки веб-службы, а не сам по себе объект проверки пригодности веб-службы. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...