![](/img/trans.png)
[英]add exception handling as jar in spring boot, controller advice is not getting called
[英]Exception handling in @Around advice in Spring boot application
我有一個用例如下:
在到達服務層之前,我必須做一些預處理,並對預處理過的數據做一些進一步的操作。 基本上,我想在@Before
和@AfterReturning
的建議之間共享處理過的數據。
我在這里瀏覽了各種帖子,這似乎是使用@Around
實現這一目標的最佳方法,否則,我必須創建一個類級屬性來捕獲兩個不同建議之間的數據,而且,我必須處理線程-安全。
因此生成的代碼片段將如下所示:
@Aspect
public class MyAspect {
@Pointcut("@within(org.springframework.stereotype.Service)")
public void applicationServicePointcut() {
}
@Around(value = "applicationServicePointcut()")
public Object process(ProceedingJoinPoint joinPoint) throws Throwable {
//Before section
... some preprocessing...
try {
Object result = joinPoint.proceed();
//After section
...save preprocessed data in db...
return result;
} catch(Exception e) {
throw e;
}
}
}
但是有了@Around
建議,我似乎有兩個問題/疑問:
只有在服務中沒有異常時才應運行 after 部分中的代碼。 有了上面的代碼結構,我想,它應該可以正常工作。 如果我錯了,請糾正我。
另一個具有更高優先級的方面被定義為使用@AfterThrowing
建議處理異常。 我無法理解,使用此設置,上述代碼中的異常處理能否正常工作?
如果不是,那么我想我必須退回到在方面中定義兩個通知@Before
和@AfterReturning
的選項,並在 ThreadLocal 變量的幫助下在這兩者之間共享數據。
有人可以在這里幫忙嗎? 謝謝。
- 只有在服務中沒有異常時才應運行 after 部分中的代碼。 有了上面的代碼結構,我想,它應該可以正常工作。 如果我錯了,請糾正我。
這將正常工作
- 另一個具有更高優先級的方面被定義為使用 @AfterThrowing 建議處理異常。 我無法理解,使用此設置,上述代碼中的異常處理能否正常工作? 如果不是,那么我想我必須退回到在方面中定義兩個通知 @Before 和 @AfterReturning 的選項,並在 ThreadLocal 變量的幫助下在這兩者之間共享數據。
這里的問題是,當您不做任何事情時,為什么要捕獲異常? 您可以刪除 try/catch。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.