我看點類將是,使用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