弹簧启动 - 不带嵌入式 tomcat 的 Rest Call 客户端
我一直试图找出弹簧靴的问题,因为我是春天的新手,我想在这里得到一些帮助。
我有一个基于弹簧引导的java应用程序,它作为守护程序运行,并向远程服务器发出一些GET请求。(仅作为客户端)。
但是我的弹簧启动应用程序在内部启动了一个嵌入式tomcat容器。我的理解是,如果java应用程序充当服务器,它将需要tomcat。但是我的应用程序只是远程机器的GET API的消费者,为什么它需要一个嵌入式tomcat?
在我的pom文件中,我指定了spring-boot-starter-web,假设甚至进行GET调用都需要它。
但是在做了一些关于禁用嵌入式tomcat的研究之后,我找到了一个解决方案。
要进行以下更改,
@SpringBootApplication(exclude = {EmbeddedServletContainerAutoConfiguration.class,
WebMvcAutoConfiguration.class})
& in application.yml
spring:
main:
web-environment: false
随着 application.yml 的更改,我的 jar 甚至没有开始,直接中止,甚至没有在 logback 日志中记录任何内容。
现在,如果我删除appplication.yml更改,我的jar将启动(仅在@SpringBootApplication年中的第一次更改),但会出现一些异常。
[main] o.s.boot.SpringApplication : Application startup failed
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
我在这里的疑虑是,
1)tomcat,无论是独立的还是嵌入式的,对于一个只对远程机器进行GET API调用的应用程序来说,真的需要吗?
2)我如何克服这个异常并安全地删除嵌入的tomcat,同时仍然执行GET API调用?