2

2012 年 2 月 28 日下午 12:46:54 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息:刷新 org.springframework.context.support.ClassPathXmlApplicationContext@780024:启动日期 [2 月 28 日星期二 12:46:54 GMT+05: 30 2012];上下文层次结构的根 2012 年 2 月 28 日下午 12:46:54 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO:从类路径资源加载 XML bean 定义 [newSpringXMLConfig.xml] 2012 年 2 月 28 日 12:46:55 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons INFO:在 org.springframework.beans.factory.support.DefaultListableBeanFactory@ef98ac 中预实例化单例:定义 bean [org.springframework.aop.config.internalAutoProxyCreator,tri,cir ,形状,LAspect]; 工厂层次结构的根 2012 年 2 月 28 日 12:46:55 PM org. springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons INFO:销毁 org.springframework.beans.factory.support.DefaultListableBeanFactory@ef98ac 中的单例:定义 bean [org.springframework.aop.config.internalAutoProxyCreator,tri,cir,shape,LAspect] ; 工厂层次结构的根 线程“main”org.springframework.beans.factory.BeanCreationException 中的异常:在类路径资源 [newSpringXMLConfig.xml] 中创建名称为“tri”的 bean 时出错:bean 的初始化失败;嵌套异常是 java.lang.IllegalArgumentException:切入点格式不正确:在字符位置 4 get() 处期望“名称模式” ^ DefaultListableBeanFactory@ef98ac:定义bean [org.springframework.aop.config.internalAutoProxyCreator,tri,cir,shape,LAspect];工厂层次结构的根 线程“main”org.springframework.beans.factory.BeanCreationException 中的异常:在类路径资源 [newSpringXMLConfig.xml] 中创建名称为“tri”的 bean 时出错:bean 的初始化失败;嵌套异常是 java.lang.IllegalArgumentException:切入点格式不正确:在字符位置 4 get() 处期望“名称模式” ^ DefaultListableBeanFactory@ef98ac:定义bean [org.springframework.aop.config.internalAutoProxyCreator,tri,cir,shape,LAspect];工厂层次结构的根 线程“main”org.springframework.beans.factory.BeanCreationException 中的异常:在类路径资源 [newSpringXMLConfig.xml] 中创建名称为“tri”的 bean 时出错:bean 的初始化失败;嵌套异常是 java.lang.IllegalArgumentException:切入点格式不正确:在字符位置 4 get() 处期望“名称模式” ^ 在类路径资源 [newSpringXMLConfig.xml] 中定义:bean 初始化失败;嵌套异常是 java.lang.IllegalArgumentException:切入点格式不正确:在字符位置 4 get() 处期望“名称模式” ^ 在类路径资源 [newSpringXMLConfig.xml] 中定义:bean 初始化失败;嵌套异常是 java.lang.IllegalArgumentException:切入点格式不正确:在字符位置 4 get() 处期望“名称模式” ^

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at sam.mainaop.main(mainaop.java:16)

原因:java.lang.IllegalArgumentException:切入点格式不正确:在字符位置 4 get() 处期望“名称模式” ^

at org.aspectj.weaver.tools.PointcutParser.resolvePointcutExpression(PointcutParser.java:316)
at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:294)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:195)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.checkReadyToMatch(AspectJExpressionPointcut.java:181)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.getClassFilter(AspectJExpressionPointcut.java:162)
at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:200)
at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:254)
at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:286)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findAdvisorsThatCanApply(AbstractAdvisorAutoProxyCreator.java:117)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:87)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:68)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:359)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:322)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1426)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
... 11 more

Java 结果:1 构建成功(总时间:1 秒)

和代码:

package sam; 

import org.aspectj.lang.annotation.Aspect; 
import org.aspectj.lang.annotation.Before; 
import org.aspectj.lang.annotation.Pointcut; 

@Aspect public class LoggingAspect { 
  @Before("get()") 
  public void LoggingAdvice() { 
    System.out.println("Good Afternoon"); 
  } 

  @Before("get()") 
  public void LAdvice() { 
    System.out.println("Good Morning"); 
  } 

  @Pointcut("execution(* get*())") 
  public void get() { } 
}
4

1 回答 1

1

根据spring aop doc

完整的 AspectJ 切入点语言支持 Spring 中不支持的其他切入点指示符。它们是:call、get、set、preinitialization、staticinitialization、initialization、handler、adviceexecution、withincode、cflow、cflowbelow、if、@this 和 @withincode。

所以我假设你应该避免 Spring Aop 中的命名冲突

于 2012-02-28T10:15:29.333 回答