使用Pivotal TC Server的Spring Boot Web应用程序

时间:2014-11-30 07:26:38

标签: spring maven spring-boot tcserver

我在Spring Tool Suite中将我的项目重构为Spring Boot应用程序。所有文档都展示了如何创建一个包含嵌入式Tomcat实例的自包含应用程序,该实例很有用。

在此之前,我有自己的Maven Web-MVC项目,为Spring提供基于XML的配置。我可以将它直接部署到TC Server,它运行良好。我最喜欢的:热插拔!我可以添加新的功能和类,它们立即被TC Server选中,无需任何其他配置。

然而,使用Spring Boot和嵌入式Tomcat,我发现情况并非如此。 Hotswapping非常有限,许多基本更改都需要重新启动。从我以前读过的东西来看,TC Server是一个更复杂的Tomcat版本,所以这引出了我的两个问题:

1)如何通过STS在TC Server上运行我的Maven Spring Boot应用程序?启动新的Pivotal TC Run配置对我不起作用。

2)为什么没有Spring Boot文档示例强调TC Server在嵌入式Tomcat上的使用,前者似乎工作得更好?

1 个答案:

答案 0 :(得分:3)

您可以将Spring Boot应用程序部署到tc Server,方法与将其部署到任何其他独立servlet容器的方式相同。您需要进行三项更改:

  1. 扩展SpringBootServletInitializer,以便容器正确引导您的应用程序:

    @Configuration
    @EnableAutoConfiguration
    @ComponentScan
    public class Application extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(Application.class);
        }
    }
    
  2. 将项目转换为使用war包装。 Maven示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <!-- ... -->
        <packaging>war</packaging>
        <!-- ... -->
    </project>
    
  3. 标记您提供的spring-boot-starter-tomcat依赖项,以便嵌入式Tomcat不会与tc Server中的类冲突。 Maven示例:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    
  4. 我不知道Tomcat和tc Server的类重新加载功能之间有任何区别。也许您在tc Server实例中配置了Spring Loaded?如果是这样,你也可以在Spring Boot中使用它。