栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

aspectj-maven-plugin Lombok 共存及编译后织入

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

aspectj-maven-plugin Lombok 共存及编译后织入

aspectj-maven-plugin Lombok 共存及编译后织入
    • 应用场景:
    • 实现方案
      • 1. 编写AOP逻辑
      • 2. pom 相关配置
      • 3. 打包编译

应用场景:

通过AOP 方式拦截 es lowleve api 查询,处理返回结果失败的问题
需要处理方法:org.elasticsearch.client.RestClient#performRequest(org.elasticsearch.client.Request)

实现方案

编写AOP实现,通过maven插件aspectj-maven-plugin 将AOP逻辑织入es的client jar(elasticsearch-rest-client-7.6.2.jar)包中。

1. 编写AOP逻辑

主要代码

import static org.apache.http.HttpStatus.SC_MULTIPLE_CHOICES;
import static org.apache.http.HttpStatus.SC_OK;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.util.EntityUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.elasticsearch.client.Request;
import org.elasticsearch.client.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


@Aspect
public class ElasticsearchAspectj {

    
    private static Logger log = LoggerFactory.getLogger(ElasticsearchAspectj.class);

    @Pointcut("execution(org.elasticsearch.client.Response org.elasticsearch.client.RestClient.performRequest(org.elasticsearch.client.Request))")
    public void restClientPerformRequest() {
    }

    
    @Around("restClientPerformRequest()")
    public Object restClientPerformRequestProcess(ProceedingJoinPoint pj) throws Throwable {
        Object[] args = pj.getArgs();
        Request request = null;
        if (args.length > 0) {
            request = (Request) args[0];
        }
        Response response = (Response) pj.proceed();
        //todo
        handleResponse(response, request);
        return response;
    }

}
2. pom 相关配置
	
        
            org.aspectj
            aspectjrt
            ${aspectjweaver.version}
        
        
            org.elasticsearch.client
            elasticsearch-rest-client
            compile
        
    
    
        
            
                org.codehaus.mojo
                aspectj-maven-plugin
                ${aspectj-maven-plugin.version}
                
                    ${java.version}
                    ${java.version}
                    none
                    ${java.version}
                    false
                    true
                    
                    
                        ${project.build.directory}/classes
                    
                    
                        
                            org.elasticsearch.client
                            elasticsearch-rest-client
                        
                    
                
                
                    
                        
                            compile
                        
                    
                
            
        
    
3. 打包编译
  • 执行打包编译命令
    mvn -DskipTests=true -pl 项目名称 -am clean package
  • 可以确认一下jar包或者target中是否包含 重新编译后的文件:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/340706.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号