我最近想要採取一大步,並將所有內容都移至基於Java的配置。至今工作完美。只有一個問題。Spring基於Java的Servlet容器初始化(web.xml替代)與XML配置支持?
有此WebApplicationInitializer接口從春,這實際上是第一個可替代的web.xml據我所知:
public class MyWebApplicationInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) {
XmlWebApplicationContext appContext = new XmlWebApplicationContext();
appContext.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml");
ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet(appContext));
registration.setLoadOnStartup(1);
registration.addMapping("/");
}
}
更好,有這個完美的事情AbstractAnnotationConfigDispatcherServletInitializer類,更是完美的,如果你的配置文件要使用的(調度員等)都是基於Java的:
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { MyWebConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
而且也是一個XML版本,如果您的調度員還停留在XML:
0123現在public class MyWebAppInitializer extends AbstractDispatcherServletInitializer {
@Override
protected WebApplicationContext createRootApplicationContext() {
return null;
}
@Override
protected WebApplicationContext createServletApplicationContext() {
XmlWebApplicationContext cxt = new XmlWebApplicationContext();
cxt.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml");
return cxt;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
我的問題是:我主要基於Java的配置文件,所以我現在用的是2的情況下與AbstractAnnotationConfigDispatcherServletInitializer
。但是我有一個XML文件(用於Spring Security),我真的很想註冊,而不需要改變我的抽象類。對於這種情況是接口WebApplicationInitializer
(1. case)是唯一的當前解決方案(或可以是解決方案)?還是有另一種方法來實現這一點,而不使用1的情況下,或沒有創建2 WebApplicationInitializer
類(1與AbstractAnnotationConfigDispatcherServletInitializer
和1與AbstractDispatcherServletInitializer
)?
我剛看到這個頁面[SpringBlog](http://spring.io/blog/2013/07/03/spring-security-java-config-preview-web-security),其中配置了Spring Security基於Java的。 3個月..所以技術上我不再有這個問題了。但是,對於其他基於Java的conf的情況,這個問題可能很有趣。尚未支持。 – akcasoy