Tôi muốn tạo một Pointcut cho các phương thức riêng được chú thích với một chú thích cụ thể. Tuy nhiên, khía cạnh của tôi không được kích hoạt khi chú thích ở trên một phương thức riêng tư như dưới đây.AspectJ pointcut cho các phương thức PRIVATE có chú thích
@Aspect
public class ServiceValidatorAspect {
@Pointcut("within(@com.example.ValidatorMethod *)")
public void methodsAnnotatedWithValidated() {
}
@AfterReturning(
pointcut = "methodsAnnotatedWithValidated()",
returning = "result")
public void throwExceptionIfErrorExists(JoinPoint joinPoint, Object result) {
...
}
Interface Dịch vụ
public interface UserService {
UserDto createUser(UserDto userDto);
}
Dịch vụ thực hiện
public class UserServiceImpl implements UserService {
public UserDto createUser(UserDto userDto) {
validateUser(userDto);
userDao.create(userDto);
}
@ValidatorMethod
private validateUser(UserDto userDto) {
// code here
}
Tuy nhiên nếu tôi di chuyển chú thích để một giao diện công cộng phương pháp thực hiện createUser
, khía cạnh của tôi được kích hoạt. Làm thế nào tôi nên xác định điểm cắt của tôi hoặc cấu hình khía cạnh của tôi để có được trường hợp sử dụng ban đầu của tôi làm việc?
Có ví dụ nào về điều này bạn có thể chỉ đến không? cảm ơn! –