2016-07-12 30 views
0

Ich entwickle eine WebSocket-Server-Anwendung mit Feder. Klasse PlayerHandlerSpring AOP Aspekte nicht auf Anmerkungen

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); 
    } 
} 

ich Benutzer möchte mit jeder eingehenden Anforderung von Token autorisiert werden, so habe ich eine 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(); 
    } 
} 

ich die @AuthorizationRequired Anmerkung hinzugefügt, die Verfahren, bei denen Benutzer anzeigt, sind werde autorisiert werden. Leider kann die Methode autorisiert nie aufgerufen werden. Ich habe folgenden Code zu meiner Hauptklasse hinzugefügt, um zu überprüfen, ob die Bean erstellt wurde.

UserAuthorization ua = ctx.getBean(UserAuthorization.class); // ApplicationContext 
if(au == null) System.out.println("is null") 

Aber ich bekomme kein solches Protokoll. Meine Feder Config

@EnableAutoConfiguration 
@Configuration 
@EnableAspectJAutoProxy 
@Import({com.berrigan.axevor.websocket.WebSocketConfig.class}) 
@ComponentScan(basePackages = {"com.berrigan.axevor"}) 
public class Config {} 

Annotation Code:

@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

Lassen Sie uns Ihre Anmerkung sehen. Sende einen [mcve], während du dabei bist. –

+0

Ja, das alles funktioniert gut für mich, mit einigen Grundannahmen. Bitte poste ein [mcve]. –

+0

Dieser Code sollte lauffähig sein, ich benutze Spring-Boot, um es auszuführen – Berrigan

Antwort

0

Lösung gefunden, beschädigt pom.xml-Datei. Nach der Regeneration funktioniert alles wie ein Charm