AspectJ - 无法识别连接点表达式中注释的存在

时间:2012-05-11 15:35:27

标签: spring aop aspectj

在我的一个方面,我有以下方法:

@Before("execution (* org.xx.xx.xx..*.*(@Standardized (*),..))")
public void standardize(JoinPoint jp) throws Throwable {
}

我的目标是找到我的应用程序包的所有方法,这些方法至少有一个用@Standardized注释的参数(不是用@Standardized注释的类型不同)

ps:@Standardized是一个自定义注释。

从我在文档中看到的,这个配置应该是正确的(如果没有,请告诉我),但是当我在JBoss服务器下部署我的应用程序时,我有以下例外:

java.lang.IllegalArgumentException:警告此类型名称不匹配:标准化

详细说明:

11.05.12 17:02:35 ERROR - ContextLoader.java@initWebApplicationContext: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.config.internalTransactionAdvisor': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: warning no match for this type name: Standardized [Xlint:invalidAbsoluteTypeName]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)

我试过(@Standardized *,..)而不是(@Standardized(*),..)(我不知道会有相同的结果)但我仍然有同样的错误。

有人知道为什么吗?

提前感谢您的帮助。

问候。

1 个答案:

答案 0 :(得分:2)

除非@Standardized注释位于默认包中,否则您需要为注释指定FQN名称或使用类似@*..Standardized的模式。