我看点类将是,使用AspectJ不能在春季工作的AOP?
@Configuration
@EnableAspectJAutoProxy
@Component
@Aspect
public class AspectClass {
@Before("execution(* com.pointel.aop.test1.AopTest.beforeAspect())")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Before running the beforeAspect() in the AopTest.java class!");
System.out.println("Hijacked Method name : " + joinPoint.getSignature().getName());
System.out.println("************************");
}
}
我的其他Java类
public class AopTest {
public void beforeAspect() {
System.out.println("This is beforeAspect() !");
}
}
我的主类是
public class MainMethod {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("ApplicationContext/applicationContext.xml");
AopTest test = (AopTest)context.getBean("bean1");
test.beforeAspect();
}
}
我applicationContext.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 ">
<bean id="bean1" class="com.pointel.aop.test1.AopTest" />
</beans>
在此@Before("execution(* com.pointel.aop.test1.AopTest.beforeAspect())")
中的AspectClass
将不会在beforeAspect()
之前执行AopTest
,此时运行Main方法。
好的答案是肯定赞赏的。
不要让你的配置类与你的Aspect类相同。另外,你需要'@ ComponentScan'你的Aspect所在的包。 – 2013-03-27 14:57:57
我删除了'@ Configuration'并包含'@ ComponentScan',但仍然无法工作。 – 2013-03-27 15:04:25
请看下面,有几件事情你错过了。 – 2013-03-27 15:12:30