我们正在寻求将我们的项目迁移到 Spring Boot。但目前尚不清楚如何复制其功能AbstractAnnotationConfigDispatcherServletInitializer
在 Spring Boot 中?
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer
{
@Override
protected Class<?>[] getRootConfigClasses()
{
return new Class<?>[]{AppConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses()
{
return new Class<?>[]{WebappConfig.class};
}
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
registration.setAsyncSupported(true);
}
@Override
protected String[] getServletMappings()
{
return new String[]{"/"};
}
@Override
protected Filter[] getServletFilters()
{
DelegatingFilterProxy shiroFilter = new DelegatingFilterProxy("shiroFilter");
shiroFilter.setTargetFilterLifecycle(true);
CompositeFilter compositeFilter = new CompositeFilter();
compositeFilter.setFilters(ImmutableList.of(new CorsFilter(),shiroFilter));
return new Filter[]{compositeFilter};
}
}
The AppConfig
and WebappConfig
父/子关系可以通过以下方式处理SpringApplicationBuilder
,尽管您也可以考虑平面层次结构。
假设您全力以赴,并运行一个嵌入式 servlet 容器,您可以注册Filters
and Servlets
直接作为豆子。
您还可以使用ServletRegistrationBean
and FilterRegistrationBean
如果您需要设置诸如setAsyncSupported
。最后的选择是添加一个实现org.springframework.boot.context.embedded.ServletContextInitializer
然后自己进行注册。
像这样的事情可能会让你更进一步:
@Bean
public ServletRegistrationBean dispatcherServlet() {
ServletRegistrationBean registration = new ServletRegistrationBean(
new DispatcherServlet(), "/");
registration.setAsyncSupported(true);
return registration;
}
@Bean
public Filter compositeFilter() {
CompositeFilter compositeFilter = new CompositeFilter();
compositeFilter.setFilters(ImmutableList.of(new CorsFilter(), shiroFilter));
return compositeFilter
}
另外,请查看参考手册中的这一部分http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-embedded-container
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)