Intellij spring启动应用程序无法在tomcat中运行

时间:2016-03-06 17:39:53

标签: java spring tomcat intellij-idea spring-boot

这是我的班级

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并打开页面,但它是空的。

为什么我看不到我的输出?

1 个答案:

答案 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