【发布时间】:2015-08-20 15:04:36
【问题描述】:
基本上我想将我的应用程序分成两部分。每个部分都有自己的安全性内容并拥有@Controllers。 @Services 应该可以从两个部分访问。
所以我想,我应该得到 2 个DispatcherServlet。一个听/admin/*,第二个听其他所有内容(/)。每个都有自己的AnnotationConfigWebApplicationContext,所以我可以对@Controllers 进行单独的组件扫描。
而且由于 Spring Boot 提供了一个开箱即用的 DispatcherServlet 监听 /,我想,我可以添加第二个:
@Configuration
public class MyConfig {
@Bean(name="myDS")
public DispatcherServlet myDS(ApplicationContext applicationContext) {
AnnotationConfigWebApplicationContext webContext = new AnnotationConfigWebApplicationContext();
webContext.setParent(applicationContext);
webContext.register(MyConfig2.class);
// webContext.refresh();
return new DispatcherServlet(webContext);
}
@Bean
public ServletRegistrationBean mySRB(@Qualifier("myDS") DispatcherServlet dispatcherServlet) {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(dispatcherServlet);
servletRegistrationBean.addUrlMappings("/admin/*");
servletRegistrationBean.setName("adminServlet");
return servletRegistrationBean;
}
}
MyConfig2 类,只有@Configuration 和@ComponentScan。在同一个包中是一个@Controller。
启动应用程序时,我可以看到第二个 servlet 映射正在注册,但 @Controller 没有注册。此外,我现在可以从/ 和 /admin 访问all @Controllers。
知道我怎样才能让它工作吗?
【问题讨论】:
标签: spring spring-mvc servlets spring-boot spring-4