抛出建议后,委托服务

AfterThrowing advice, delegate to service

我有这样的 aop xml 配置:

    <aop:config>
        <aop:pointcut id="serviceMethod" expression="execution(* egovframework.example..impl.*Impl.*(..))" />

        <aop:aspect ref="exceptionTransfer">
            <aop:after-throwing throwing="exception" pointcut-ref="serviceMethod" method="transfer" />
        </aop:aspect>
    </aop:config>
    
    <bean id="exceptionTransfer" class="bla.bla.DefaultExceptionTransfer">
    </bean>

您可以看到 <aop:aspect ref="exceptionTransfer"> 行表明该方面是 link 与下面的 bean 编辑的。

现在我想将其转换为基于 java 注释。我做了什么:

@Configuration
@Aspect
public class ContextExceptionHandlerAspectConfiguration {

    @Pointcut("execution(* egovframework.example..impl.*Impl.*(..))")
    public void serviceAnnotation() { }

    //HOW TO WRITE AFTER THROWING
    
    @Bean
    public ExceptionTransfer exceptionTransfer() {
        return new DefaultExceptionTransfer();
    }
}

问题是我不知道如何将代码写入 link 具有异常传输的方面。请帮忙,谢谢

如何实现此目的的一个示例是使用 @AfterThrowing,如下例所示:

@Slf4j
@Aspect
@Component
public class LoggingAspect {
    @AfterThrowing(value = "execution(* com.amitph.spring.aop.service.FileSystemStorageService.readFile(..))",
            throwing = "ex")
    public void logAfterThrowing(JoinPoint joinPoint, Exception ex) {

        log.error("Target Method resulted into exception, message {}", ex.getMessage());
        notificationService.error(ex.getMessage());
    }
}