Java 端点的异常处理组件

Java 端点的异常处理组件,java,spring,interceptor,spring-aop,endpoint,Java,Spring,Interceptor,Spring Aop,Endpoint,我用的是弹簧。 我的应用程序中有几个端点。基本上,每个端点返回不同的对象。 应用程序由几个层组成。 无论错误发生在哪里,将错误传播给端点的调用者对我们来说都很重要。 我们的方法是在发生错误的地方抛出异常,异常应该被端点捕获,端点应该根据异常中的信息更改响应的状态代码。我们捕获异常,因为我们不想向调用方抛出soap错误 我们已经到了架构中的一个点,我们不希望端点管理异常。我们认为t应该由AOP在某种拦截器中完成。 重要的是,在外部异常处理组件中,我可以完全获取异常及其属性,并基于此,无论调用哪个端

我用的是弹簧。 我的应用程序中有几个端点。基本上,每个端点返回不同的对象。 应用程序由几个层组成。 无论错误发生在哪里,将错误传播给端点的调用者对我们来说都很重要。 我们的方法是在发生错误的地方抛出异常,异常应该被端点捕获,端点应该根据异常中的信息更改响应的状态代码。我们捕获异常,因为我们不想向调用方抛出soap错误

我们已经到了架构中的一个点,我们不希望端点管理异常。我们认为t应该由AOP在某种拦截器中完成。 重要的是,在外部异常处理组件中,我可以完全获取异常及其属性,并基于此,无论调用哪个端点,都可以获取端点的返回类型对象,并通过基于异常填充一些适当的字段(可能是通过某种java反射)来返回它


我的第一种方法是使用SOAP拦截器,但我认为它是有限的,取决于我需要什么。我正在研究AOP,有什么想法吗?

在我看来,这是AOP的完美方案。但问题出在哪里您可以在您的服务方法而不是端点上创建@Around类型的方面,然后调用joinPoint。在try-catch块内继续。捕获异常并返回所需内容:P通过使用AOP API,您可以检查返回类型、参数。。基本上您需要的一切:

非常感谢!让我问你一些其他的问题…是否有可能有两个或@Around方面匹配相同的方法?执行命令是什么?我可以从jointPoint获取方法返回的对象类型吗?是的。您可以使用@Order注释来完成此操作。但我从未检查过它是如何工作的。你必须自己检查:thxs!获取方法从jointPoint返回的对象类型如何?MethodSignature signature=MethodSignature jointPoint.getSignature signature.getReturnType;差不多吧。我现在没有办法检查。这里有一个非常类似的案例: