Не работает Aspect при аннотации EnableAspectJAutoProxy spring boot
Мне нужно реализовать функционал, который проверяет подписку (есть ли она у пользователя), и я решил сделать через аннотацию и AOP. Вот код моей аннотации:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequiresSubscription {
String value();
}
код аспекта:
@Aspect
@Component
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
@Order(1)
@Log4j2
@RequiredArgsConstructor
public class SubscriptionAspect {
@Before("@annotation(requiresSubscription)")
public void checkSubscription(RequiresSubscription requiresSubscription) {
log.info("Check... %s".formatted(requiresSubscription.value()));
}
}
и код контроллера, где я использую аннотацию.
@RequiresSubscription("GOLD")
@GetMapping("graph")
private List<LogGraphDto> logsGraph(
@AuthenticationPrincipal UserEntity user
) {
...
}
но не работает, как я выяснил, метод аспекта checkSubscription
вообще не вызывается. как это исправить?
(аннотация EnableAspectJAutoProxy есть в конфиге)
Ответы (1 шт):
Автор решения: One qxz
→ Ссылка
гениальность на спринге.. надо было модификатор доступа у метода эндпоинта поставить с private
на public