【问题标题】:Write a Spring Web Socket project without SpringBoot or Maven/Gradle编写没有 Spring Boot 或 Maven/Gradle 的 Spring Websocket 项目
【发布时间】:2014-09-18 11:02:03
【问题描述】:

如何创建 Spring Java Web 套接字 项目使用 XML 或 Java 配置,但没有 Spring Boot。在哪里可以找到分步教程。我不知道如何在 ecliplse 中使用 spring boot。我也不想使用 gradle 或 maven。我没有找到在eclipse中使用spring boot的教程。由于我是 spring 新手,所以我无法在没有 maven 或 gradle 的情况下启动项目。如果我需要使用 Eclipse,我需要学习如何在没有任何内置工具的情况下创建一个 spring 项目。这纯粹是为了学习目的。

下面是我用来替换Spring boot相关主类的类

AppConfig 类

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@ComponentScan("hello")
@EnableWebMvc  
public class AppConfig  {



}

WebAppInitializer 类

import javax.servlet.ServletContext;  
import javax.servlet.ServletException;  
import javax.servlet.ServletRegistration.Dynamic;  
import org.springframework.web.WebApplicationInitializer;  
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;  
import org.springframework.web.servlet.DispatcherServlet;

public class WebAppInitializer implements WebApplicationInitializer{// extends AbstractAnnotationConfigDispatcherServletInitializer {

        public void onStartup(ServletContext servletContext) throws ServletException 
        {
            try
            {
                 AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();  
                    ctx.register(AppConfig.class);  
                    ctx.setServletContext(servletContext);    
                    Dynamic dynamic = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx)); 

                   dynamic.addMapping("/");
                   // dynamic.addMapping("/springStomp/");
                    dynamic.setLoadOnStartup(1);
                    //dynamic.setAsyncSupported(true);
                    //ctx.refresh();
                    System.out.println("config done");

            }
            catch(Exception e)
            {
                e.printStackTrace();
                System.out.println("error");
            }
       }
}

WebSocketConfig 类

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        System.out.println("inside websocket config class");
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/app");
    }
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/hello").withSockJS();
    }
}

剩余与spring web socket tutorial中的相同

【问题讨论】:

  • 相信我,你想使用 maven 或 gradle。您不想花费数小时在 Internet 上搜索所有需要且正确的依赖项。它将为您节省大量时间。对于初学者,请查看弹簧参考指南。
  • 我在一个学校封闭的网络中。所以在这里我无法使用 maven,因为它正在下载并且我们的网络防火墙阻止了它。
  • 那么,如果防火墙禁止这样做,您希望如何自己下载所需的 jars/zip?如果 maven 无法下载,则无法下载。
  • 这里管理员将下载我们需要的所有 jars。所以到目前为止,我几乎拥有Spring web socket tutorial 所需的所有罐子。现在我被这个弹簧靴困住了。你能告诉我如何在没有弹簧启动的情况下编码。
  • @SathishKumarkk 虽然短期内可能不可行,但您需要让管理员为学校设置本地存储库。查看sonatype.org/nexusjfrog.com/open-source/#os-arti

标签: java eclipse spring maven spring-websocket


【解决方案1】:

我知道那是什么感觉,我的公司网络对我下载依赖项的 maven 调用不友好。如果您不得不像我一样艰难地做事,请访问 www.mvnrepository.com,只需在搜索中输入 spring,您就可以下载所需的 jar。如果您在部署或编译期间遇到任何 NoClassDef 错误,它通常会告诉您缺少什么,然后在链接中再次搜索关键字。

【讨论】:

  • +1。虽然它更加更容易,但 Maven 对于构建 Spring 项目并不是必不可少的。从我的脑海中,你需要的弹簧包是:spring-core、spring-beans、spring-context、spring-aop、spring-expression、spring-web、spring-websocket。您可能还需要 spring-webmvc 和 spring-context-support,对于大多数实际应用程序 spring-security、spring-security-core 和 spring-security-web。有一些传递依赖:你需要一个日志框架(我当前的项目中有 slf4j-api、slf4j-log4j 和 log4j),...
  • aopalliance-1.0.jar 用于 Spring 面向方面的功能,Jackson 用于 JSON 生产(jackson-databind、jackson-annotations 和 jackson-core)。
【解决方案2】:

只是:

  1. 在eclipse中添加gradle插件
  2. 从 Spring 站点导入以下项目作为 gradle 项目
  3. ???
  4. 利润!

如果你不想使用 spring boot 删除任何 spring boot 依赖项,添加常规 deps,如 spring-context、spring-webmvc 等。最后添加 spring-websocket 和 spring-messaging 库。

【讨论】:

  • 你的回答在这种情况下没有任何意义。
猜你喜欢
  • 2018-11-30
  • 2017-02-15
  • 2018-09-29
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
  • 2017-08-24
  • 2020-03-09
相关资源
最近更新 更多