2012-12-15 109 views
2

我试图与Spring 3.1 &无法配置切入点运行基于@AspectJ的AOP正确 切入点和建议的方法是:@AspectJ基于AOP与Spring 3.1

切入点:

@Pointcut("execution(* point.*.*(..))") 
public void selectAll() {} 

@After("selectAll()") 
public void afterAdvice() { 
    System.out.println("profile has been setup."); 
} 

意见之前:意见后

@Before("selectAll()") 
public void beforeAdvice() { 
    System.out.println("Going to setup profile."); 
} 

&运行主程序,我得到异常:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'student' defined in class path resource [spring.xml]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut selectAll 
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:294) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 

虽然当我给在beforeAdvice()和afterAdvice切入点表达式()方法,去除切入点方法的每一件事情,做工精细

@Before("execution(* point.*.*(..))") 
public void beforeAdvice() { 
    System.out.println("Going to setup profile."); 
} 

@After("execution(* point.*.*(..))") 
public void afterAdvice() { 
    System.out.println("profile has been setup."); 
} 

我试图将切入点应用于Student类的方法:

package point; 

public class Student{ 
private Integer age; 
private String name; 

public void setAge(Integer age) { 
    this.age = age; 
} 

public Integer getAge() { 
    System.out.println("Age : " + age); 
    return age; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getName() { 
    System.out.println("Name : " + name); 
    return name; 
} 

public void printThrowException() { 
    System.out.println("Exception raised"); 
    throw new IllegalArgumentException(); 
} 
} 

Spring配置XML:使用

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd "> 

<aop:aspectj-autoproxy /> 
<bean id="student" class="point.Student"> 
    <property name="name" value="Zara" /> 
    <property name="age" value="11" /> 
</bean> 
<bean id="logging" class="point.Logging" /> 
</beans> 

Jar文件:

aopalliance-1.0.jar 
asm-3.3.1.jar 
aspectj-1.7.1.jar 
aspectjrt-1.6.8.jar 
aspectjtools-1.5.4.jar 
aspectjweaver-1.6.2.jar 
cglib-2.2.2.jar 

弹簧3.1罐子的

回答

4

解决了这个问题:问题,同时创造豆是因为老坛子

更换罐子:

aopalliance-1.0.jar 
asm-3.3.1.jar 
aspectj-1.7.1.jar 
aspectjrt-1.6.8.jar 
aspectjtools-1.5.4.jar 
aspectjweaver-1.6.2.jar 
cglib-2.2.2.jar 

aopalliance-1.0.jar 
asm-3.3.1.jar 
aspectj-1.7.1.jar 
aspectjrt-1.7.0.jar 
aspectjweaver-1.7.0.jar 
cglib-2.2.2.jar