この例に従って、Spring のWebApplicationInitializer
-->を使用して Java を介して DispatcherServlet を構成しましたjavax.servlet.ServletContainerInitializer
。
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext mvcContext = new AnnotationConfigWebApplicationContext();
mvcContext.register(MyConfiguration.class);
ServletRegistration.Dynamic appServlet = servletContext.addServlet("appServlet", new DispatcherServlet(mvcContext));
appServlet.setLoadOnStartup(1);
Set<String> mappingConflicts = appServlet.addMapping("/");
if (!mappingConflicts.isEmpty()) {
for (String s : mappingConflicts) {
LOGGER.error("Servlet URL mapping conflict: {}", s);
}
throw new IllegalStateException("'appServlet' cannot be mapped to '/'");
}
}
Tomcatを起動すると、明らかにサーブレットがすでにマッピングされているようで、それがTomcatのデフォルトのサーブレットであるとしか思えないIllegalStateException
ため、上記のメッセージが表示されます。mappingConflicts を無視すると、何にもマップされません。/
DispatcherServlet
このデフォルトのサーブレット マッピングを自分のものでオーバーライドする方法はありますDispatcherServlet
か/*
?
この回答は、アプリケーションが Catalina webapps フォルダーにデプロイされる場所を変更することで解決策を提供しますが、私は邪魔にならないものを望んでいました。