Объявление

Свернуть
Пока нет объявлений.

Как автовайрить в аспект

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Как автовайрить в аспект

    Написал аспект, который должен проверять x-auth-token. Суть проверки сводится к тому, что нужно узнать есть ли токен в кеше редиса. Работа с редисом ведётся через компонент. Компонент надо автовайрить в аспекте. Делаю это через конструктор. Без autowired всё работает. Вот код аспекта:
    Код:
    @Component
    @Aspect
    public class CheckController {
        private static final String X_AUTH_TOKEN = "x-auth-token";
    
        private final Redis redis;
    
        public CheckController(Redis redis) {
            this.redis = redis;
        }
    
        @Pointcut("execution(* *(..)) && within(ru.my.adminconsole.*.controller.*)")
        private void allMethods() {
    
        }
    
        @Before("allMethods()")
        public void something(JoinPoint joinPoint) {
            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
    
            String xAuthToken = request.getHeader(X_AUTH_TOKEN);
            String login = redis.getLoginByToken(xAuthToken);
            System.out.println(login);
    
            if (StringUtils.isEmpty(login)) {
                throw new RuntimeException(xAuthToken);
            }
    
        }
    }
    Падает с ошибкой: Parameter 0 of constructor in ru.my.adminconsole.util.configuration.CheckControl ler required a bean of type 'ru.my.integrations.anotherSystem.service.Redis' that could not be found.

    Напомню: Redis - @Component, интерфейс, который нужно инжектить.

    Пробовал добавлять аннотацию @Configurable. Проблему не решает. Понимаю, что аспект вне контейнера спринга...но как же мне заавтовайрить мой редис?
    Помогите, плиз
Обработка...
X