[SPRING] 주석이있는 PRIVATE 메소드를위한 AspectJ pointcut
SPRING주석이있는 PRIVATE 메소드를위한 AspectJ pointcut
특정 주석으로 주석이 달린 개인 메소드 용 Pointcut을 만들고 싶습니다. 그러나 애노테이션이 아래의 개인 메소드에있을 때 내 측면이 트리거되지 않습니다.
@Aspect
public class ServiceValidatorAspect {
@Pointcut("within(@com.example.ValidatorMethod *)")
public void methodsAnnotatedWithValidated() {
}
@AfterReturning(
pointcut = "methodsAnnotatedWithValidated()",
returning = "result")
public void throwExceptionIfErrorExists(JoinPoint joinPoint, Object result) {
...
}
서비스 인터페이스
public interface UserService {
UserDto createUser(UserDto userDto);
}
서비스 구현
public class UserServiceImpl implements UserService {
public UserDto createUser(UserDto userDto) {
validateUser(userDto);
userDao.create(userDto);
}
@ValidatorMethod
private validateUser(UserDto userDto) {
// code here
}
그러나 공용 인터페이스 메서드 구현 createUser에 주석을 이동하면 내 측면이 트리거됩니다. 원래의 유스 케이스를 작동시키기 위해 pointcut을 정의하거나 aspect를 어떻게 설정해야합니까?
해결법
-
==============================
1.8. Spring을 이용한 Aspect 지향 프로그래밍
8. Spring을 이용한 Aspect 지향 프로그래밍
-
==============================
2.AspectJ로 전환하고 권한있는 aspect를 사용하라. 또는 Spring AOP의 제한 사항을 수용 할 수 있도록 애플리케이션 디자인을 변경하십시오. 나의 선택은 훨씬 더 강력한 AspectJ가 될 것이다.
AspectJ로 전환하고 권한있는 aspect를 사용하라. 또는 Spring AOP의 제한 사항을 수용 할 수 있도록 애플리케이션 디자인을 변경하십시오. 나의 선택은 훨씬 더 강력한 AspectJ가 될 것이다.
from https://stackoverflow.com/questions/15093894/aspectj-pointcut-for-annotated-private-methods by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 다른 두 날짜 사이의 날짜를 확인하십시오 spring data jpa (0) | 2019.02.04 |
---|---|
[SPRING] Spring 3에서 applicationContext를 주입하는 모범 사례 (0) | 2019.02.03 |
[SPRING] 다중 Dispatcher가있는 Spring Java 구성 (0) | 2019.02.03 |
[SPRING] Spring Security 잘못된 remember-me 토큰 (시리즈 / 토큰) 불일치. 이전의 쿠키 도용 공격을 암시합니다. (0) | 2019.02.03 |
[SPRING] 엔티티가 지속되지 않음 - Spring + Hibernate + JPA (0) | 2019.02.03 |