![](/img/trans.png)
[英]Exception handling in @Around advice in Spring boot application
[英]Spring @Around for exception handling
情況如下:我的應用程序擴展了一個框架。 因此,我沒有main()或我聲明的任何其他入口點(我重寫了該框架提供的方法,並安排了其他所有內容)。 這個框架可以保證安全。 安全性是基於Apache Mina構建的。
當與應用程序建立不安全的連接時,mina會引發異常,這是堆棧跟蹤:
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at sun.security.ssl.EngineInputRecord.bytesInCompletePacket(EngineInputRecord.java:171) ~[na:1.7.0_21]
at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:845) ~[na:1.7.0_21]
at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:758) ~[na:1.7.0_21]
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) ~[na:1.7.0_21]
at org.apache.mina.filter.support.SSLHandler.unwrap0(SSLHandler.java:657) ~[mina-filter-ssl-1.1.7.jar:na]
at org.apache.mina.filter.support.SSLHandler.unwrapHandshake(SSLHandler.java:613) ~[mina-filter-ssl-1.1.7.jar:na]
at org.apache.mina.filter.support.SSLHandler.handshake(SSLHandler.java:493) ~[mina-filter-ssl-1.1.7.jar:na]
at org.apache.mina.filter.support.SSLHandler.messageReceived(SSLHandler.java:306) ~[mina-filter-ssl-1.1.7.jar:na]
at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:392) ~[mina-filter-ssl-1.1.7.jar:na]
... 12 common frames omitted
我想使用AOP技巧來捕獲此錯誤,因此我可以很好地通知用戶並發送警報。 我想到了這方面:
@Aspect
public class SSLExceptionCatcherAdvice {
private static final Logger LOG = LoggerFactory.getLogger(SSLExceptionCatcherAdvice.class);
@Around("execution(* *.unwrap(..))")
public void catchException(ProceedingJoinPoint pjp) {
try {
pjp.proceed();
} catch (Throwable exception) {
LOG.info("########################################");
}
}
}
但是,它根本不會被調用。 順便說一句,這很好,它可以捕獲我代碼庫中的其他方法調用。
有什么建議嗎? 提前謝謝。
默認情況下,Spring使用基於代理的AOP解決方案,因此,只有Spring托管的bean才能應用這些方面。 它不適用於非春季托管的Bean。 請參閱參考指南的本部分 。
您正在嘗試攔截Javax上的執行javax.
軟件包,這是一種特殊情況,只能在加載時編織環境中使用,而不能與基於代理或基於編譯時的解決方案一起使用。 將它們與加載時編織結合起來也可能很棘手,因為這些類可能在加載時編織之前就已經加載了。
順便說一句,這很好,它可以捕獲我代碼庫中的其他方法調用。
實際上,您的方面有缺陷, @Around
通知應始終返回Object
並應始終返回調用proceed()
方法的結果(除非您拋出Exception
。您的方面正常中斷,返回結果,現在有效地每個方法都返回null
。
鏈接:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.