首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过外部库实现的Aspectj函数

通过外部库实现的Aspectj函数
EN

Stack Overflow用户
提问于 2016-09-01 18:07:00
回答 1查看 1.6K关注 0票数 0

我有一个外部库,它不是spring应用程序。它定义了很少的Aspectj函数/PointCuts,但是当我在一个spring启动应用程序中使用这个库时,它不会被调用。当我在spring boot应用程序本身中定义切入点时,它工作得很好。我猜是我的配置出了问题,比如@EnableAspectJAutoProxy不能工作,或者别的什么。

服务代码-:

代码语言:javascript
复制
@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切入点的代码

代码语言:javascript
复制
@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..");

        }


    }
}

这两个类都在我的外部库中,但它并不像预期的那样工作。请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-03 18:47:21

如果希望在Spring应用程序中使用原生AspectJ方面,而不是基于代理的Spring AOP,则需要分别通过@EnableLoadTimeWeaving<context:load-time-weaver/>将应用程序配置为使用LTW (加载时编织)。有关详细信息,请参阅Spring manual

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39268613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档