Javac
Участник
Написал аспект, который должен проверять x-auth-token. Суть проверки сводится к тому, что нужно узнать есть ли токен в кеше редиса. Работа с редисом ведётся через компонент. Компонент надо автовайрить в аспекте. Делаю это через конструктор. Без autowired всё работает. Вот код аспекта:
Падает с ошибкой: 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. Проблему не решает. Понимаю, что аспект вне контейнера спринга...но как же мне заавтовайрить мой редис?
Помогите, плиз
Код:
@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);
}
}
}
Напомню: Redis - @Component, интерфейс, который нужно инжектить.
Пробовал добавлять аннотацию @Configurable. Проблему не решает. Понимаю, что аспект вне контейнера спринга...но как же мне заавтовайрить мой редис?
Помогите, плиз