微服务AOP切面实现全局日志入库记录(feign接口调用保存)

场景:使用AOP切面,对微服务工程进行入库记录(fegin接口调用)

参考:

若依微服务版本gitee
若依微服务部署参考
@EnableFeignClients注解的属性字段basePacka详解
若依微服务官方参考文档
微服务aop工程日志参考

一、若依的使用,使用postman获取token

微服务AOP切面实现全局日志入库记录(feign接口调用保存)_第1张图片
微服务AOP切面实现全局日志入库记录(feign接口调用保存)_第2张图片
使用postman访问一下地址
http://ip:端口/auth/login
参数为
{
“username”:“,
“password”:”“,
“code”:”“,
“uuid”:”"
}
获取到token后
访问swagger,进行接口的测试访问
微服务AOP切面实现全局日志入库记录(feign接口调用保存)_第3张图片
二、AOP实现微服务工程日志(代码参考于若依的微服务版本)
微服务AOP切面实现全局日志入库记录(feign接口调用保存)_第4张图片

1、注意事项

1.1在Application启动类上的@EnableFeignClients指定要扫描的包

示例为

@EnableFeignClients(basePackages = {"service.Impl","activity.feign"})
@SpringBootApplication
public class ActivityApplication {
    public static void main(String[] args) {
        SpringApplication.run(ActivityApplication.class, args);
    }
}

若不指定会出现调用的feign接口实现类无法注入

1.2 异步调用feign接口会导致请求头的丢失,解决方案
  /**
     * 保存系统日志记录
     */
    public void saveSysLog(SysOperLog sysOperLog) {
        //TODO :获取当前线程请求头信息(解决Feign异步调用丢失请求头问题)
        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
        ThreadUtil.execAsync(new Runnable() {
            @Override
            public void run() {
                //每一个线程都来共享之前的请求数据
                RequestContextHolder.setRequestAttributes(requestAttributes);
                remoteLogService.saveLog(sysOperLog);
            }
        });
    
    }

2.完整代码实现(请结合若依微服务版本的代码)

若依微服务版本gitee
1.
微服务AOP切面实现全局日志入库记录(feign接口调用保存)_第5张图片
2
微服务AOP切面实现全局日志入库记录(feign接口调用保存)_第6张图片

你可能感兴趣的:(SpringCloud,常用功能开发,微服务,java,架构)