Java 8
package com.myproject.javatestmavenbom.module1.aop;
public class Main {
public static void main(String[] args) {
UserService userService = new UserService();
userService.createUser("create new user john", 21);
userService.deleteUser("john");
}
}
package com.myproject.javatestmavenbom.module1.aop;
public class UserService {
public void createUser(String name, int age) {
System.out.println("UserService: Request to create user: " + name + " | age: " + age);
}
public void deleteUser(String name) {
System.out.println("UserService: Request to delete user: " + name);
}
}
package com.myproject.javatestmavenbom.module1.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class MyAspect {
// Before calling any method in the com.myproject.javatestmavenbom.module1.aop.UserService
@Before("call(* com.myproject.javatestmavenbom.module1.aop.*(..))")
public void beforeUserServiceMethodCall(JoinPoint joinPoint) {
System.out.println("MyAspect: Calling a UserService method: " + joinPoint.getSignature().toShortString());
}
}
Mas quando inicio o aplicativo, obtenho o seguinte resultado:
UserService: Request to create user: create new user john | age: 21
UserService: Request to delete user: john
Então, por que o método beforeUserServiceMethodCall
não chama antes de createUser
/ deleteUser
?
MyAspect: Calling a UserService method: