0

プロジェクトを Spring Tool Suite 内から Spring Boot アプリケーションとしてリファクタリングしました。すべてのドキュメントは、Tomcat インスタンスが埋め込まれた自己完結型アプリケーションを作成する方法を示しています。これは機能し、優れています。

ただし、これより前に、Spring 用の XML ベースの構成を備えた独自の Maven Web-MVC プロジェクトがありました。これを TC サーバーに直接デプロイでき、うまく機能しました。私が一番好きなこと:ホットスワップ!新しい関数とクラスを追加することができ、それらは追加の構成なしで TC サーバーによってすぐに取得されました。

ただし、Spring Boot と組み込みの Tomcat を使用すると、そうではないことがわかりました。ホットスワップは非常に制限されており、多くの基本的な変更には再起動が必要です. 私が読んでいることから、TCサーバーはTomcatのはるかに洗練されたバージョンであるため、これは私の2つの質問につながります。

1) Maven Spring Boot アプリケーションを STS 経由で TC サーバー上で実行するにはどうすればよいですか? 新しい Pivotal TC Run Configuration を開始してもうまくいきません。

2) Spring Boot ドキュメントの例では、組み込み Tomcat よりも TC サーバーの使用が強調されていないのはなぜですか?

4

1 に答える 1

4

Spring Boot アプリケーションは、他のスタンドアロン サーブレット コンテナーにデプロイするのと同じ方法で tc サーバーにデプロイできます。次の 3 つの変更を行う必要があります。

  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 サーバーのクラスと競合しないように、依存関係を提供済みとしてマークします。Maven の例:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    

Tomcat と tc Server のクラス再ロード機能の違いについては知りません。おそらく、tc Server インスタンスで Spring Loaded が構成されていますか? その場合、Spring Boot でも使用できます。

于 2014-12-01T10:35:43.347 に答える