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

Spring AOP AspectJ试图建议不匹配pointcut的类

柴阳云
2023-03-14
compile "org.springframework.boot:spring-boot-starter-web:1.4.2.RELEASE" 
[...]
compile "org.aspectj:aspectjrt:1.8.10"
compile "org.aspectj:aspectjweaver:1.8.10"
@Aspect
public abstract class Profiler {
    private static final Logger logger = LoggerFactory.getLogger(getClass());

    protected abstract void toLog();   

    @Around("toLog()")
    public Object logAround(ProceedingJoinPoint joinPoint) {

[...]
@Aspect
public class SDKProfiler extends Profiler {
    @Override
    @Pointcut("execution(public * com.company.app.stuff.*.*(..))")
    protected void toLog() {}
}
[...]  
Caused by: java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut toLog
    at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:301)
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:207)
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.checkReadyToMatch(AspectJExpressionPointcut.java:193)
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.getClassFilter(AspectJExpressionPointcut.java:170)
    at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:220)
    at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:279)
    at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:311)
    [...]

共有1个答案

锺离逸春
2023-03-14

最初的项目和新项目之间有一些显著的不同。新项目通过配置类将方面添加到上下文中,而旧(工作)项目通过组件扫描添加方面。切换到方面的组件扫描解决了这个问题。坏:

@Configuration
public class LoggerConfig {

    @Bean
    public SDKProfiler sdkProfiler() { return new SDKProfiler(); }
}

好:

@Configuration
@ComponentScan("com.company.app.logging")
public class LoggerConfig {
} 

其中方面位于com.company.app.logging包中。

 类似资料:
  • 在Afterreturn和Afterthrough类型的通知方法中,有value和pointcut属性可用。当我尝试了一些手,发现两者都可以互相替换,如果两者都存在,切入点优先于值。有人能在spring AOP建议的上下文中解释一下这两个属性之间的区别吗。

  • 我们有两个web服务(REST SOAP)在Apache Camel 2.13.0中运行,它基于CXF 2.7.10版,一直使用SSL和基本身份验证,运行得非常好。 由于Camel的版本升级到2.14.0版(内部使用现在的CXF 3.0.1),我们的服务现在停止工作,因为端口x的——但在版本更新期间,配置未被更改。 因此,我创建了一个新的eclipse项目,它将事情简化到最低限度(只是一个简单的S

  • 本文向大家介绍查找图的匹配数,包括了查找图的匹配数的使用技巧和注意事项,需要的朋友参考一下 问题陈述 下图的匹配数字是多少? 解 顶点数= 9 我们只能匹配8个顶点。 匹配号码为4。

  • 我创造了一个切入点。但它不起作用。请协助我下面的代码。http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop/spring-aop-3.0.xsd“> https://pastebin.com/qi0cjkjj

  • 我尝试检查密码与功能password_verify发布的用户密码和散列从数据库。 首先,我如何生成密码和哈希: 登录时验证: 总是收到密码错误的消息。我阅读了这个php密码\u散列和密码\u验证问题没有匹配,但我手动测试了散列字符串,以验证文本字符串。 哈希字符串:$2y$10$SwSq7OukPpN/QJ8YOdKgquJQ28fQbNY1Q3JdTFnoe。2VxD/D2RXBS 通过电子邮件

  • 我想同时执行精确的单词匹配和部分单词/子字符串匹配。例如,如果我搜索“test product”,那么我应该能够在结果中找到“test”和“product”相关的文本。我用下面的match查询搜索弹性搜索,它不是给我精确的匹配,而是给我一些更多的不确定的匹配。示例是在结果中给出与“sample”相关的文本。 我使用弹性搜索6.3 请在下面找到我的查询 搜索结果:“Hits”:[{“_index”: