が検出されない:WebApplicationInitializerが、私はweb.xmlファイルを使用してディスパッチャを設定することができ、私の小さなSpring MVCのプロジェクトで
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</init-param>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>myweb.ApplicationConfig</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
私は、web.xmlから上記の設定を削除したいと思い、私はこのクラスを使用してみてください:
@Configuration
@EnableWebMvc
public class ApplicationInitializer implements WebApplicationInitializer {
protected Logger logger = Logger.getLogger(ApplicationInitializer.class);
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
logger.info("Application initialization ...");
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.setConfigLocation("myweb");
servletContext.addListener(new ContextLoaderListener(context));
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("DispatcherServlet", new DispatcherServlet(context));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
logger.info("Application initialized");
}
}
残念ながら、上記のコードは呼び出されず、理由はわかりません。理由は何かを助けることができますか?
環境:
SpringServletContainerInitializerクラス:JBossのEAP 6.4は、春はEARにあるWAR内のlibフォルダにある
それは私が右だ場合には、このように動作しなければなりませんSpringはServletContainerInitializerを実装し、注釈@HandlesTypes(WebApplicationInitializer.class)を実装しています。 META-INF/servicesフォルダー内のspring-web.jarこのクラスはサービスであると宣言され、呼び出される必要があります。 サーブレット3.0このクラスをパラメータとしてクラスで呼び出す機能は、WebApplicationInitializerインターフェイスを実装しています。問題は、SpringServletContainerInitializerがWebコンテナから呼び出されていないことと、なぜその理由がわからないということです。
にモジュールorg.springframework.springを入れています、 、エラーはありません。onStartupは呼び出されません。コンポーネントのスキャンは、WebMvcConfigurerAdapterを拡張する他のクラスで宣言され、その構成とコンポーネントのスキャンが機能します。 変更された投稿を確認して、私の意見でどのように動作するかを書き留めました。 –