2016-09-27 5 views
1

WARアプリケーションをSpringブートアプリケーションに移行したいとします。SpringBootServletInitializer#実行可能ファイル用にconfigureが呼び出されていません

私はhttp://docs.spring.io/spring-boot/docs/1.4.1.RELEASE/reference/htmlsingle/#howto-convert-an-existing-application-to-spring-bootからの指示に従ってくださいと私は、展開WARを得たクラス

@EnableAutoConfiguration 
public class MyInitializer extends SpringBootServletInitializer { 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
    application.banner(new MyBanner()); 
    application.sources(MyEndpoint.class); 
    return application; 
    } 
} 

を作りました。

私は次のフェーズで実行可能なWARを取得したいと考えています。私はこの問題は、私は#1のconfigureが

を実行していない java -jar target/myapp.war MyInitializer呼び出すとき、私は少し困惑しているということであるクラス

public class MyApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(MyInitializer.class, args); 
    } 

} 

を作りました。 MyInitializerからMyApplicationへのコピー貼り付けロジックを回避する方法。私はこれらのクラスに参加する必要がありますか?

+0

'spring-boot-maven-plugin'を追加しましたか? http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging –

+0

@AntonNovopashinはい、プラグインを使用して実行可能なWAR – michaldo

+0

を作成します。イニシャライザは、組み込みのwarとして実行していないときにサーブレットコンテナにデプロイするときにのみ実行されます。 –

答えて

2

Personnally私は一緒に両方をマージ:

@SpringBootApplication 
public class MyApplication extends SpringBootServletInitializer { 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 
     return MyApplication.build(builder); 
    } 

    public static void main(String[] args) { 
     MyApplication.build(new SpringApplicationBuilder()).run(args); 
    } 

    private static SpringApplicationBuilder build(SpringApplicationBuilder builder) { 
     return builder.banner(new MyBanner()).sources(MyEndpoint.class); 
    } 
} 
  • 私が本当に実行可能ファイルとしてあなたのWARを起動するときSpringBootServletInitializerが今まで を実行されるとは思いません。 のファイル拡張子はWARですが、実際にはJARとして使用しています。コマンドラインからlauched

  • は、スプリングブートエントリポイントはメインメソッドであり、SpringBootServletInitializerだけスプリングブートエントリポイントとして解釈されません。 WARとしてデプロイするとき

  • SpringBootServletInitializerのみ使用される:容器はスプリングブートエントリポイントとしてSpringBootServletInitializerを使用する(メインメソッド完全に無視されることになります)。

関連する問題