2016-03-29 1 views
-1

私はspringbootアプリケーション開発の初心者です。このURLの助けを借りて私のプロジェクトを生成しましたhttps://start.spring.io/私のIDEでこのプロジェクトを開くと、2つのクラスが生成されました これは最初のクラスです春のブートプロジェクトのコンフィグレーションクラスの役割

public class ServletInitializer extends SpringBootServletInitializer { 
    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(TravellingApplication.class); 
    }} 

、これは

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

第二のクラスである私のServletinitializerクラスにconfigure method内部で起こっていただきました!私は実際にそれを得ることはありません。私はクラス の両方を削除して、このような何かを行う場合 私は私が間違っている場合

class simmilar to dispatcherservlet.xml 

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = "com.travelliing") 
public class WebConfig extends WebMvcConfigurerAdapter { 
} 

    class simmilar to web.xml 

public class WebAppInitializer implements WebApplicationInitializer { 
@Override 
public void onStartup(ServletContext servletContext) throws ServletException { } 
} 

が私を修正し、 より良いコードの設定を書くことができます。私は ServletInitializer classwebAppInitializerの両方が何らかの理由で同じ機能を持つことができると思います。 implement WebApplicationInitializerconfigure method in servletInitializer classを除き、 です。 @SpringBootApplicationで注釈を付け travellingApplication classで起こっていただきました!

WebMvcConfigureAdapter

答えて

1

両方のクラスは、Springアプリケーションコンテキストをロードする拡張私のwebConfig Classにそれがsimmilarです。

通常のJavaアプリケーションとしてアプリケーションを実行する場合は、メインメソッド(TravellingApplication)のクラスが使用されます。たとえば、EclipseからRun As - > Javaアプリケーションを実行する場合、またはアプリケーションをjarファイルとしてパッケージ化し、コマンドラインからjava -jar myApp.jarを実行する場合です。

SpringBootServletInitializerは、アプリケーションをWARファイルとしてパッケージ化し、TomcatまたはServlet 3.0+をサポートする別のWebサーバーに展開する場合、アプリケーションコンテキストをロードするために使用されます。基本的にはweb.xmlを置き換えます。

私のServletinitializerクラスの のconfigureメソッド内で何が起こっているのか分かりません。

TravellingApplicationは@Configurationクラスである - それは春豆及び他のSpring構成を宣言ので、このライン - return application.sources(TravellingApplication.class);はちょうどこの構成(アプリケーション・コンテキスト)をロードします。メインメソッドでも同じことが起こります。

@SpringBootApplicationで注釈さtravellingApplicationクラスで起こっていただきましたが、それは私のWebConfigクラスにsimmilar がWebMvcConfigureAdapter

@SpringBootApplication

@Configuration 
@EnableAutoConfiguration 
@ComponentScan 

にちょうどショートカットhereを参照してくださいで延びているです。

+0

なので、 'configure'メソッドが'アプリケーションコンテキスト 'を読み込むのと同じです。'main method'と全く同じことが起こっています。つまり、' webconfigクラス 'で行ったように、そのクラスから 'main method'を削除し、そのクラスを' configuration'のために使うことができます。 – Priyamal

+1

@Priyamalはい、外部Webサーバーにアプリケーションを展開する必要があり、メインメソッドのように組み込みWebサーバーを使用することはできません。 –

関連する問題