【AOP】aop代码解决实际小问题,小记

背景:springboot项目下,我们的代码中有很多处调用了其他系统,但是其他系统的后期可能就不调用了。要是每个代码的地方都要写一段if代码来判断下或者去逐个删除下,既费时又不安全,所以这个时候就引用了aop面向切面编程。

具体实现:

@Aspect
@Slf4j
@Component
public class SystemAspect {

    @Value("${xxxx.xxxx.xxxx.xxxx.xxxx:true}")
    private Boolean sysOldSystem;

    @Pointcut(value = "execution(* com.xxxx.xxxx.core.feign.EgServiceClient.*(..))")
    private void pointcut() {
    }

    @Around(value = "pointcut()")
    public Object around(final ProceedingJoinPoint point) throws Throwable {
        if (Boolean.FALSE.equals(sysOldSystem)) {      
            return ResponseResult.success(null);
        } else {
            return point.proceed();
        }
    }
}

1.${xxxx.xxxx.xxxx.xxxx.xxxx:true} 可以在对应的管理系统中配置开关为true或者false,默认是true,开。假如阿波罗等管理配置的工具;

2.注解@Pointcut,是aop面向切面编程的核心,切入点。标识匹配com.xxxx.xxxx.core.feign.EgServiceClient.这个包下的所有方法。类似于所有的日志

3.@Around(value = "pointcut()") 就是要执行的具体逻辑,调用com.xxxx.xxxx.core.feign.EgServiceClient包下的任意类的任意方法时均会调用此方法。

若是true,就扫描EgServiceClient下的方法,若是false,就不扫描。

总结:运用AOP就很好的解决了对所有指定类的操作,很棒!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值