package com.googosoft.db.aspect; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.springframework.stereotype.Component; /** * @author songyan * @version 2020年2月15日 上午10:14:06 * @desc */ @Aspect @Component public class BrokerAspect { @Around("execution(* com.googosoft.db.dao.*.*.*(..))") public Object Around(ProceedingJoinPoint point){ synchronized (this) { try { return point.proceed(); } catch (Throwable e) { e.printStackTrace(); } } return null; } }
package com.googosoft.db.aspect; import org.aspectj.lang.annotation.*; import org.springframework.stereotype.Component; /** * @author songyan * @version 2020年2月15日 上午10:14:06 * @desc */ @Aspect @Component public class BrokerAspect { /** * 定义切入点,切入点为com.example.demo.aop.AopController中的所有函数 * 通过@Pointcut注解声明频繁使用的切点表达式 */ @Pointcut("execution(* com.googosoft.db.service.*.*.add*(..)) || execution(* com.googosoft.db.service.*.*.update*(..)) || execution(* com.googosoft.db.service.*.*.del*(..))") public void BrokerAspect() { } /** * @description 在连接点执行之前执行的通知 */ @Before("BrokerAspect()") public void doBeforeGame() { synchronized (this) { } } /** * @description 在连接点执行之后执行的通知(返回通知和异常通知的异常) */ @After("BrokerAspect()") public void doAfterGame() { } /** * @description 在连接点执行之后执行的通知(返回通知) */ @AfterReturning("BrokerAspect()") public void doAfterReturningGame() { } /** * @description 在连接点执行之后执行的通知(异常通知) */ @AfterThrowing("BrokerAspect()") public void doAfterThrowingGame() { } }