Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过外部库实现Aspectj函数_Java_Spring Boot_Aop_Aspectj - Fatal编程技术网

Java 通过外部库实现Aspectj函数

Java 通过外部库实现Aspectj函数,java,spring-boot,aop,aspectj,Java,Spring Boot,Aop,Aspectj,我有一个外部库,它不是spring应用程序。它定义了几个Aspectj函数/切入点,但在spring引导应用程序中使用此库时,不会调用它。当我在SpringBoot应用程序中定义切入点时,它工作得很好。我猜我的配置有问题,比如@enableAspectProxy不工作或者其他什么 服务代码-: @EnableAspectJAutoProxy @Service public class LtRequest { RestTemplate restTemplate; public L

我有一个外部库,它不是spring应用程序。它定义了几个Aspectj函数/切入点,但在spring引导应用程序中使用此库时,不会调用它。当我在SpringBoot应用程序中定义切入点时,它工作得很好。我猜我的配置有问题,比如@enableAspectProxy不工作或者其他什么

服务代码-:

@EnableAspectJAutoProxy
@Service
public class LtRequest {
    RestTemplate restTemplate;

    public LtRequest() {
        restTemplate = new RestTemplate();
        restTemplate.setErrorHandler( new LtResponseErrorHandler());
    }

    public Object request(String url, LtRequestType type, Class clz){
        return null;
    }
    public RestResponseDTO getObject(String url,Class clz){
        RestResponseDTO restResponseDTO =restTemplate.getForObject(url,RestResponseDTO.class);
        //LtUtil.parseRequest(restResponseDTO);
        return restResponseDTO;
    }

    private  void postObject(String url,Object obj){
        RestResponseDTO restResponseDTO =restTemplate.postForObject(url,obj,RestResponseDTO.class);

    }




}
aspectj切入点代码

@Aspect
@Component
public class ParseRequestAspect {
    static final Logger logger = LogManager.getLogger(ParseRequestAspect.class);
    @Around("execution(* com.limetray.helper.utils.LtRequest.getObject(..))")
    public Object parseRequestAfterReturn(ProceedingJoinPoint joinPoint) {
        logger.info("calling after return aspect function..");
        try{
            RestResponseDTO response = (RestResponseDTO) joinPoint.proceed();
            LtUtil.parseRequest(response);
            return response.getResult();
        }
        catch (Throwable e){
            throw new LtException("Exception occured while parsing request response..");

        }


    }
    @After("execution(* com.limetray.helper.utils.LtRequest.getObject(..))")
    public void parseRequestAfterReturn(JoinPoint joinPoint) {
        logger.info("calling after return aspect function..new");
        try{
            /*RestResponseDTO response = (RestResponseDTO) joinPoint.proceed();
            LtUtil.parseRequest(response);
            return response.getResult();*/
        }
        catch (Throwable e){
            throw new LtException("Exception occured while parsing request response..");

        }


    }
}

这两个类都在我的外部库中,但它没有按预期工作。请提供帮助。

如果您希望在Spring应用程序中使用本机AspectJ特性,而不是基于代理的Spring AOP,则需要分别通过
@EnableLoadTimeWeaving
将应用程序配置为使用LTW(加载时编织)。有关更多信息,请参阅。

如果希望在Spring应用程序中使用本机AspectJ特性,而不是基于代理的Spring AOP,则需要分别通过
@EnableLoadTimeWeaving
将应用程序配置为使用LTW(加载时编织)。有关更多信息,请参阅