Платформа валидации для бизнес-приложений, построенная на Spring 2.5

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

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

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

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

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

0
0
2 821
2

Ответы 2

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

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

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

Напомним, что интерфейс 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) для прямого объекта, который будет использоваться в веб-службе.

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

Другие вопросы по теме