Я разрабатываю приложение сервера WebSocket, используя весну. Класс PlayerHandlerАспекты Spring aop не выполняются в аннотациях
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import java.io.IOException;
/**
* Created by kris on 11.07.16.
*/
public class PlayerHandler extends TextWebSocketHandler{
public PlayerHandler(){}
@Override
@AuthorizationRequired
public void handleTextMessage(WebSocketSession session, TextMessage tm) throws IOException {
session.sendMessage(tm);
}
}
Я хочу, чтобы пользователю разрешается при каждом входящем запросе по лексемы, так что я создал Aspect UserAuthorization
package com.berrigan.axevor.authorization;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class UserAuthorization {
@Around("@annotation(com.berrigan.axevor.authorization.AuthorizationRequired)")
public void authorize(ProceedingJoinPoint jp) throws Throwable{
System.out.println("\n\n\n\n\Works\n\n\n\n\n\n");
jp.proceed();
}
}
Я добавил @AuthorizationRequired аннотацию, что указывает на методы, в которых пользователи будет разрешено. К сожалению, метод authorize никогда не вызван. Я добавил следующий код в свой основной класс, чтобы проверить, создан ли компонент.
UserAuthorization ua = ctx.getBean(UserAuthorization.class); // ApplicationContext
if(au == null) System.out.println("is null")
Но я не получаю такой журнал. Моя весна конфигурации
@EnableAutoConfiguration
@Configuration
@EnableAspectJAutoProxy
@Import({com.berrigan.axevor.websocket.WebSocketConfig.class})
@ComponentScan(basePackages = {"com.berrigan.axevor"})
public class Config {}
код Аннотация:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AuthorizationRequired{}
@Configuration @EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer{
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry){
registry.addHandler(playerHandler(), "/game").setAllowedOrigins("*");
}
@Bean
public WebSocketHandler playerHandler(){
return new PlayerHandler();
}
}
Давайте посмотрим вашу аннотацию. Опубликуйте [mcve], пока вы на нем. –
Да, это все работает отлично для меня, с некоторыми базовыми предположениями. Пожалуйста, опубликуйте [mcve]. –
Этот код должен быть запущен, я использую Spring-Boot для его запуска. – Berrigan