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

  • Автор темы Автор темы Javac
  • Дата начала Дата начала
  • Теги Теги
    java ee

Javac

Участник
Написал аспект, который должен проверять 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. Проблему не решает. Понимаю, что аспект вне контейнера спринга...но как же мне заавтовайрить мой редис?
Помогите, плиз
 
Назад
Верх