Mai*_*jer 13 java spring servlets spring-mvc spring-boot
我有一个以下项目结构
-Project
|-config
| |-modules
| |-admin
| |-web
|- platform
Run Code Online (Sandbox Code Playgroud)
Platform是包含spring-boot启动类的项目,Platform依赖于config,config依赖于目录模块中的所有内容.Platform也是使用mvn spring-boot:run命令启动的模块.
我想要完成的是模块管理员和网络(两个网络应用程序)都有自己的映射
以下代码表示管理模块中的控制器,Web模块还包含一个类似的控制器(这就是要点)
@Controller
public class AdminController {
@RequestMapping("/")
public String adminController() {
return "admin";
}
}
Run Code Online (Sandbox Code Playgroud)
这里有一些用于配置管理模块的代码
@Configuration
public class Config implements EmbeddedServletContainerCustomizer {
@Autowired
protected WebApplicationContext webApplicationContext;
@Autowired
protected ServerProperties server;
@Autowired(required = false)
protected MultipartConfigElement multipartConfig;
protected DispatcherServlet createDispatcherServlet() {
AnnotationConfigEmbeddedWebApplicationContext webContext = new AnnotationConfigEmbeddedWebApplicationContext();
webContext.setParent(webApplicationContext);
webContext.scan("some.base.package");
return new DispatcherServlet(webContext);
}
protected ServletRegistrationBean createModuleDispatcher(DispatcherServlet apiModuleDispatcherServlet) {
ServletRegistrationBean registration =
new ServletRegistrationBean(apiModuleDispatcherServlet,
"/admin");
registration.setName("admin");
registration.setMultipartConfig(this.multipartConfig);
return registration;
}
@Bean(name = "adminsServletRegistrationBean")
public ServletRegistrationBean apiModuleADispatcherServletRegistration() {
return createModuleDispatcher(createDispatcherServlet());
}
public void customize(ConfigurableEmbeddedServletContainer container) {
container.setContextPath("/admin");
}
}
Run Code Online (Sandbox Code Playgroud)
类似于Web模块的东西
我已经尝试了一些给定答案的实现.
当我让组件扫描时,扫描两个模块(删除ComponentScan过滤器)
我得到一个不明确的映射发现异常,说两个控制器方法都调度到相同的路径"/"
但是当在其中一个模块上禁用组件扫描时,管理模块确实会映射到/ admin.
当我禁用两个控制器时,我看到/ web和/ admin dispatchServlets被映射.
所以我理解异常,但我不明白如何解决这个问题.对我来说,每个模块我必须这样做,我不想用它来映射它
@RequestMapping("/admin")
Run Code Online (Sandbox Code Playgroud)
在控制器类上
我还尝试在application.properties中指定contextPath和servletPath
所以我的问题是:达到我的目标的最佳方法是什么,或者我是否尝试使用spring-boot来实现它的目标.
编辑 概念证明会很好
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |