繁体   English   中英

独立jar中没有tomcat的spring boot

[英]spring boot without tomcat in a standalone jar

我有一个包含三个 jar 文件的项目结构。 所有这些都加载到一个类路径中,然后被执行。 我正在使用 spring 核心、jpa 和 hibernate。 @Services / @Autowired工作正常,以及实体和存储库(都在 mysql 数据库上)。

现在我希望该项目可以通过网络/互联网发送和接收消息。 所以我问了一些人,如何在不破坏我现有结构的情况下实现这一目标。 有人告诉我,spring-boot 是适合我的架构,因为我不需要 Web 服务器(tomcat 或 glassfish)。

但现在我不确定这是否正确,因为我没有找到任何说同样事情的消息来源。 因此,我尝试实施它以自己验证它。
我对我的项目(所有pom.xml文件和我的配置类)所做的重要更改可以在这里找到:http: //84.141.90.123 : 9910/

从我读到的内容来看,我需要 Spring Boot 的@SpringBootApplication注释。 这相当于@Configuration@ComponentScan@EnableAutoConfiguration@EnableWebMvc
前两个已经在我的结构中。 但是当我添加最后两个注释时,我得到了不同的错误:

  • 当我添加@EnableAutoConfiguration我得到

    Caused by: java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
  • 当我添加@EnableWebMvc我得到

    Caused by: java.lang.IllegalArgumentException: A ServletContext is required to configure default servlet handling

从我糟糕的英语知识来看, @EnableWebMvc错误似乎表明该应用程序需要一个 Web 服务器(tomcat 或 glassfish)。
那么主要语句是错误的,如果没有 Web 服务器,我无法启动 Spring Boot?

因为我没有为 spring 使用任何 xml 文件和/或属性文件(它们没有工作),所以我只依赖基于 java 代码的 spring、jpa 和 hibernate 配置。 因此,只有很少的教程/线程有帮助。 大多数情况下,他们只是说add thi or add that to your xml但因为我没有它们,所以有点麻烦。

另外我用aspectj编译,所以我不能使用spring compile parent。 而且我无法操作主类/方法,因为主类位于不是我编程的外部 jar 文件中。

如此具体:

  1. 独立 jar 中的 Spring Boot 应用程序可以在没有 Web 服务器包装的情况下运行吗?
  2. 如果是,我做错了什么? 我是否缺少依赖项、注释或配置?

如果您想通过 HTTP 接收消息(即运行 REST API),那么您需要一个 Web 服务器。
如果您只想通过 HTTP 发送消息,那么您只需要一个 HTTP 客户端。

Spring-boot 可以选择运行嵌入式 Web 服务器(默认为 tomcat),您不需要运行单独的应用程序服务器。

为了解决您的构建问题,我将首先使用spring initializr生成一个项目。

您可以选择您想要的依赖项(尝试使用底部的高级版本链接),它将为您构建一个具有正确结构、构建文件和兼容依赖项的 maven/gradle 项目。

改变:

public static void main(String[] args) {
        SpringApplication.run(ActiveMqApplication.class, args); 
}

到:

public static void main(String[] args) {
    new SpringApplicationBuilder(ActiveMqApplication.class)
       .web(WebApplicationType.NONE).run(args);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM