Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自动连线SimpMessageTemplate_Java_Spring_Spring Mvc_Websocket - Fatal编程技术网

Java 自动连线SimpMessageTemplate

Java 自动连线SimpMessageTemplate,java,spring,spring-mvc,websocket,Java,Spring,Spring Mvc,Websocket,我在服务类中使用SimpMessageTemplate时遇到了麻烦。以下是相关的代码片段: UserService.java-自动连线失败,模板=null @Service public class UserService{ @Autowired private SimpMessagingTemplate template; // Some Code public void tellUser(String username, String url) {

我在服务类中使用SimpMessageTemplate时遇到了麻烦。以下是相关的代码片段:

UserService.java-自动连线失败,模板=null

@Service
public class UserService{
    @Autowired
    private SimpMessagingTemplate template;

    // Some Code

    public void tellUser(String username, String url) {
        // This is always true
        System.out.println("TEMPLATE NULL? " +(this.template == null));
        // Further code omitted
    }
}
SocketController.java-自动布线工作,Spring WebSocket按内置方式工作

@Controller
public class WebSocketController {
    @Autowired
    private SimpMessagingTemplate template;

    public void tellUser(String username, String url) {
        // False here, template is autowired correctly
        System.out.println("TEMPLATE NULL? " +(this.template == null));
        this.template.convertAndSendToUser(username, "/test/notify", new Greeting("USER SPECIFIC MESSAGE: " + url));
    }
}
WebSocketConfig.java

@Configuration
@EnableScheduling
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/user", "/test");
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/test").withSockJS();

    }
}

因此,基本上自动布线在我的控制器类中工作,但在我的服务中不工作。我确实需要在服务中手动调用convertAndSendToUser。控制器和服务之间的自动连线SimpMessageTemplate有什么区别?非常感谢您提供有关这可能发生的原因的任何信息。

最初,控制器自动连线和服务自动连线之间没有任何区别(如果SimpMessageTemplate在控制器中可用,它也必须在服务类中可用),除非spring未加载服务类


你是怎么装豆子的?也许自动扫描不包括服务类的包?您是在上下文XML中定义bean的吗?

您可以发布基于Spring注释的配置吗?您是否找到了解决方案?没有针对它的特定配置,因为在这种情况下,Spring负责自动布线本身,而不需要特定的配置。正如我所说的,它在控制器中工作正常,但在我的服务中不起作用@ComponentScan(basePackages=“com.xy.*)设置为扫描整个项目