Добрый день!
Когда я создаю иерархию контекста с помощью ServletRegistrationBean, то оба DispatcherServlet работают на одном порту:
@SpringBootApplication(exclude = {PropertyPlaceholderAutoConfiguration.class,
DispatcherServletAutoConfiguration.class,
WebMvcAutoConfiguration.class,
ErrorMvcAutoConfiguration.class})
@ConfigurationPropertiesScan
public class SocialAppApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(SocialAppApplication.class);
app.run(args);
}
@Bean
public ServletRegistrationBean<DispatcherServlet> secured()
{
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(SecuredConfig.class);
DispatcherServlet servlet = new DispatcherServlet();
servlet.setApplicationContext(context);
ServletRegistrationBean<DispatcherServlet> bean = new ServletRegistrationBean<>(servlet);
bean.setName("secured");
bean.addUrlMappings("/secured/*");
bean.setLoadOnStartup(1);
return bean;
}
@Bean
public ServletRegistrationBean<DispatcherServlet> unsecured()
{
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(UnsecuredConfig.class);
DispatcherServlet servlet = new DispatcherServlet();
servlet.setApplicationContext(context);
ServletRegistrationBean<DispatcherServlet> bean = new ServletRegistrationBean<>(servlet);
bean.setName("unsecured");
bean.addUrlMappings("/unsecured/*");
return bean;
}
}
Но если создавать иерархию контекста с помощью Fluent API
new SpringApplicationBuilder(SocialAppApplication.class).web(WebApplicationType.NONE)
.child(SecuredConfig.class).web(WebApplicationType.SERVLET)
.child(UnsecuredConfig.class).web(WebApplicationType.SERVLET)
.run(args);
то для каждого контекста требует свой порт. Почему?