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());
}
}
但是当我启动应用程序时,我得到以下结果:
UserService: Request to create user: create new user john | age: 21
UserService: Request to delete user: john
那么,为什么方法beforeUserServiceMethodCall
不在createUser
/之前调用deleteUser
?
MyAspect: Calling a UserService method: