这是我的班级
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Configuration
@ComponentScan
@EnableAutoConfiguration
@SpringBootApplication
public class TomcatIcınApplication {
public static void main(String[] args) {
SpringApplication.run(TomcatIcınApplication.class, args);
}
}
@RestController
class GreetingController {
@RequestMapping("/hello/hi")
String hello( ) {
return "Hello, xx!";
}
}
当我运行应用程序并打开localhost:8080/hello/hi
时,我可以看到输出。但是从Edit Configurations
开始,当我在端口8081
上添加tomcat服务器作为localhost:8081/hello
并运行tomcat时,它会调用app并打开页面,但它是空的。
为什么我看不到我的输出?
答案 0 :(得分:9)
当您只运行应用程序时,Spring Boot将使用其嵌入式tomcat服务器来运行您的应用程序。如果您计划使用另一个独立的tomcat服务器来部署您的启动应用程序我不建议,首先您应该告诉您的构建工具将您的应用程序打包为war
而不是{ {1}}。然后修改主引导应用程序入口点以支持它,最后使用Intellij或手动将jar
文件部署到tomcat服务器。
生成可部署war文件的第一步是提供war
子类并覆盖其SpringBootServletInitializer
方法。在你的情况下:
configure
然后告诉您的构建工具将您的应用程序打包为@SpringBootApplication
public class TomcatIcınApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(TomcatIcınApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(TomcatIcınApplication.class, args);
}
}
,而不是war
。如果你正在使用maven,只需添加:
jar
最后将<packaging>war</packaging>
标记为spring-boot-starter-tomcat
:
provided
您详细了解了春季启动传统部署 here。