Мой класс Аспект будет,AOP с использованием AspectJ не работает весной?
@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
при запуске основного метода.
Хорошие ответы определенно оценены.
Не делайте свой класс конфигурации таким же, как ваш класс Aspect. Кроме того, вам нужно '@ ComponentScan' пакет, в котором находится ваш Aspect. –
Я удалил' @ Configuration' и включил '@ ComponentScan', но все еще не работал. –
Посмотрите ниже, есть несколько вещей, которые вам не хватало. –