在设计 SpringMVC 应用程序时,@ExceptionHandler
注释由我们在 REST 层中使用。这通过将异常处理卸载到一组半通用处理程序来极大地消除 Controller 方法的困惑。
我们服务的基本架构是这样的:
[REST API] <==> [Application Services] <==> [Data Layer]
我相信 REST 层 Controller 不应该直接处理数据层异常,而应该只处理应用程序服务异常。
但是,这意味着我所有的应用程序服务方法基本上必须如下所示:
public DomainObject getSomeDomainObjectById(String id) {
DomainObject retVal = null;
try {
myDomainDao.getSomeDomainObjectById(id);
} catch (DataLayerExceptionOfSomeSort ex) {
throw translateToAppropriateServiceException(ex);
}
//do some further processing
return retVal;
}
对我来说,这是很多我不关心的当面异常处理。我还能怎么解决这个问题?有没有一种简单的方法可以在应用服务层实现与 Rest 层相同的功能?
我首先想到的是 AOP。我对此持开放态度,前提是它不会增加很多麻烦并且易于配置。
最佳答案
无论是否使用 Spring,您都应该使用 AOP,并在您的方面完成此类工作(如异常翻译、事务管理等)。
关于java - 您如何设计一个不全是 try/catch block 的服务层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24871683/