Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设计模式来验证请求?_Java_Spring_Validation_Design Patterns_Java Ee 7 - Fatal编程技术网

Java 设计模式来验证请求?

Java 设计模式来验证请求?,java,spring,validation,design-patterns,java-ee-7,Java,Spring,Validation,Design Patterns,Java Ee 7,我有下面的界面。我正在使用Java7和Spring3.0 public interface Maintain{ void save(Request request); Request getRequest(String id); void delete(Request request); void update(Request request); } public class MaintainImpl implements Maintain{ public void save

我有下面的界面。我正在使用Java7和Spring3.0

public interface Maintain{

 void save(Request request);
 Request getRequest(String id);
 void delete(Request request);
 void update(Request request);

}

public class MaintainImpl implements Maintain{


 public void save(Request request){

  //Need to validate the request before saving.
  //Need to throw run time exception if validation fails

 }

 public void getRequest(String id){

  //Need to validate the id before getting the results.
  //Need to throw run time exception if validation fails

 }

  //Similarly i  need to implement other 2 methods


}
要验证请求,请执行以下操作: 我计划编写一个接口和4个impl类,它们将具有验证逻辑

public interface validate{

 boolan validate();
}



public class SaveRequestValidator implements validate{

     public boolean validate(){
     //validation logic
    }

   }





 public class GetRequestValidator implements validate{

     public boolean validate(){
     //validation logic
    }

   }




public class DeleteRequestValidator implements validate{

     public boolean validate(){
     //validation logic
    }

   }



public class UpdateRequestValidator implements validate{

     public boolean validate(){
     //validation logic
    }

   }
现在,我可以通过将这四个验证器注入到maintainpl.java中来执行验证了吗

这是个好习惯吗?有更好的设计吗?或者我可以在一个类中保留所有验证并提供静态方法吗


谢谢

因为您使用的是Spring,所以可以使用Spring AOP或AspectJ在应用程序中执行非交叉关注点,如您要求的验证

请参阅Spring3支持JSR303bean验证规范-

这意味着您可以通过类上的注释验证(例如,您的请求)参数的某些方面


如果您想实现自定义验证方法,那么您可能应该使用javax.validation.ConstraintValidator。

Phil,您能给我举个例子吗?谢谢蒂亚加,你能给我举个例子吗?谢谢看看这个url,其中定义了切入点使用方面。您可以使用Around注释拦截对maintainpl的调用,并在该Around注释中使用验证逻辑。