spring websocket 与 spring security 启动失败, "No bean named ' stompWebSocketHandlerMapping'已定义'

标签 spring spring-security spring-boot spring-websocket

Spring Boot 1.3.0版本发布。

错误日志是

13:00:50.888 [main] ERROR o.s.boot.SpringApplication - Application startup failed org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'stompWebSocketHandlerMapping' is defined at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:698) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1175) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1057) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.security.config.annotation.web.socket.AbstractSecurityWebSocketMessageBrokerConfigurer.afterSingletonsInstantiated(AbstractSecurityWebSocketMessageBrokerConfigurer.java:222) ~[spring-security-config-4.0.3.RELEASE.jar:4.0.3.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:792) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:838) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:347) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:295) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] at com.d2js.platform.manager.Main.main(Main.java:28) [classes/:na]

我的 websocket 配置类

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Autowired
    private final TeacherMonitorHandler teacherMonitorHandler = null;

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(teacherMonitorHandler, "/websocket/teacherMonitor");
    }
}

websocket 安全配置类:

@Configuration
public class WebSocketSecurityConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer {
    @Override
    protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) {
        messages.anyMessage().permitAll();
    }
}

最佳答案

WebSocket 安全性适用于 STOMP 子协议(protocol)并依赖于 STOMP 代理配置。

您必须将 @EnableWebSocket 更改为 @EnableWebSocketMessageBroker 并继续进行 AbstractSecurityWebSocketMessageBrokerConfigurer 配置。

顺便说一句,在这种情况下,您不需要 WebSocketConfigurer

关于spring websocket 与 spring security 启动失败, "No bean named ' stompWebSocketHandlerMapping'已定义',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34326991/

相关文章:

java - 如何使用 Spring Data JPA 将列的新旧值保存到 Audit 表中

spring - 将自定义 UserDetailsS​​ervice 添加到 Spring Security OAuth2 应用程序

java - 在此行 : Factory bean not Found 处找到多个注释

spring-boot - Spring Boot 1.4,Spock和application.properties

java - Spring应用程序Thymeleaf中的css问题

java - 为什么当我访问 bean 时 @autowired 不起作用

java - java中POJO对象到JSON对象的转换

javascript - Spring Boot 无法识别 Javascript 文件

java - 如何在 Spring-Boot 2 中禁用安全性?

java - 带有可迭代的 Spring 数据 findAllBy 返回空数组