Я хочу запустить аспект весной без использования XML-файла.
Я написал классы, как показано ниже, и класс AOPTest - это мой тестовый пример junit, который вызывает метод showProducts (), но перед вызовом showProducts ()
мне нужно вызвать аспект logBeforeV1 (..), который не вызывается в моем коде ниже. Любые вклады будут оценены.
package com.aop.bl;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@Configuration
@ComponentScan(basePackages="com.aop.bl")
@EnableAspectJAutoProxy
public class MyBusinessLogicImpl {
public void showProducts() {
//business logic
System.out.println("---show products called from business layer----");
}
}
package com.aop.bl;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class MyAspect {
@Before("execution(* com.aop.bl.MyBusinessLogicImpl.showProducts(..))") // point-cut expression
public void logBeforeV1(JoinPoint joinPoint) {
System.out.println("------------calling showProducts() from MyAspect---------------: ");
}
}
package com.aop.test;
import org.junit.Test;
import com.aop.bl.*;
public class AOPTest {
@Test
public void test() {
MyBusinessLogicImpl myObj = new MyBusinessLogicImpl();
myObj.showProducts();
}
}
Мой вывод такой, как показано ниже:
---show products called from business layer----
Ожидаемый результат:
------------calling showProducts() from MyAspect---------------:
---show products called from business layer----
Примечание. Я включил аспект, используя @EnableAspectJAutoProxy