2016-07-12 6 views
0

Я разрабатываю приложение сервера 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(); 
    } 
} 
+1

Давайте посмотрим вашу аннотацию. Опубликуйте [mcve], пока вы на нем. –

+0

Да, это все работает отлично для меня, с некоторыми базовыми предположениями. Пожалуйста, опубликуйте [mcve]. –

+0

Этот код должен быть запущен, я использую Spring-Boot для его запуска. – Berrigan

ответ

0

Решение найдено, поврежден pom.xml файл. После его регенерации все работает как шарм.