当前位置: 首页 > 知识库问答 >
问题:

@目标切入点引发IllegalStateException

施彬郁
2023-03-14

在Spring boot AOP应用程序中,我有一个切入点@目标(MyAnnoation)||@注释(MyAnnoation)。如果MyAnnoation放在使用此注释注释的执行对象或注释的方法上,则应执行建议。

当我运行应用程序时

java.lang.IllegalArgumentException: Cannot subclass final class org.springframework.cloud.sleuth.log.Slf4jScopeDecorator

这里讨论了一个类似的问题,但切入点似乎太宽了,而我的切入点不是,因为我在项目中只有几个带有注释的类。

我把这个注释放在假客户端界面上,就像这样。

@MyAnnotation
@FeignClient(name="some-name", url="http://test.url")
public interface MyClient {
    @RequestMapping(method = RequestMethod.GET, value = "/endpoint")
    List<Store> getSomething();
}

你知道我的切入点怎么了吗?

共有1个答案

叶光华
2023-03-14

好的,经过几个小时的调查,我用这个替换了我的切入点

@Around("execution(* (@MyAnnotation *).*(..)) || execution(@MyAnnotation * *(..))")

如本文所述,我仅使用执行来避免创建代理。希望这有帮助

 类似资料:
  • 我对Spring和AOP是新手。我正在尝试这个简单的事情,我已经创建了一个自定义注释,当放在任何方法之前时,它应该执行一些代码。这是我创建的注释 问题是我的spring aop从来没有被触发过。我在中包含了一个bean 有人能指出我缺少什么吗?

  • 问题是@before和@afterreturn有效,但对于pointcut却不是这样。

  • 我有以下切入点表达式:

  • 问题内容: 我试图创建一个方面来监视某些方法的时间执行。当我尝试运行测试时,出现以下错误: 加载ApplicationContext时。 我将注释定义为: 这是方面代码: 且配置为: 我只是在这里检查了许多问题,但大多数问题都是使用Aspectj的1.7版作为解决方案。我在用: 其他解决方案指向方法签名中变量的名称,但是如您所见,这没有错误。 有谁知道问题出在哪里吗? 谢谢 问题答案: 我在方面类

  • 我试图在方法注释上创建一个Aeyj切入点,但我总是用不同的方法失败。我使用的是aspectj自动代理(我在Spring上下文中没有配置其他编织)。我的类如下所示: 所以我想知道为什么aspectj不会创建切入点。我设法使用执行(**(…)使其工作抛出一些exc)这对我来说很好,但我仍然想知道我做错了什么。 另外,由于是在接口中定义的,我指定了实现类的注释,有没有办法让它以这种方式工作?其他代理机制

  • 我是Spring AOP的新手,正在阅读有关切入点指示符的文档。在我看来,这和目标指示符都是一样的。有人能用一个更好/更干净的例子来解释吗?谢谢 目标对象实现AccountService接口的任何连接点(仅在Spring AOP中执行方法) 链接:http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/aop.