我正在尝试在spring MVC应用程序中处理多个Web模块。 假设我有两个模块:财务模块和仓储模块。 他们有自己的业务流程,但有一些常见的流程,如LDAP身份验证和搜索......以及它们之间的依赖关系。 所以我想将它们保存在一个Web应用程序中,有两个不同的请求映射:/ finance / *和warehouse / *
我的问题与此类似: How should I build a modularized enterprise application which must use Spring and JPA?
所以我的第一个方法是创建一个枚举来存储模块列表:
public enum WebApplicationModule {
FINANCE("/finance", "Finance Module"),
WAREHOUSE("/warehouse", "Warehouse Module");
private final String moduleTitle;
private final String moduleRequestMapping;
WebApplicationModule(String moduleRequestMapping, String moduleTitle) {
this.moduleRequestMapping = moduleRequestMapping;
this.moduleTitle = moduleTitle;
}
public String getModuleTitle() {
return moduleTitle;
}
public String getModuleRequestMapping() {
return moduleRequestMapping;
}
}
然后我创建了两个抽象控制器:
@Controller
@RequestMapping(value = {WebApplicationModule.FINANCE.getModuleRequestMapping()})
public abstract class FinanceAbstractController {
private final String VIEWS_FOLDER = "finance";
}
和
@Controller
@RequestMapping(value = {WebApplicationModule.WAREHOUSE.getModuleRequestMapping()})
public abstract class WarehouseAbstractController {
private final String VIEWS_FOLDER = "warehouse";
}
模块中的所有控制器都会扩展它们。
目标是动态处理RequestMappings:/ finance / *和warehouse / *。 我还希望能够动态显示一个菜单(ul li ahref)来选择网页标题上的模块。
我知道它不起作用,因为RequestMapping的值必须是一个常量值,这就是为什么我问你最好的方法。
由于
答案 0 :(得分:0)
您想提供共享请求映射前缀吗?像所有FinanceControllers地图网址一样,以“/ finance /..".
开头首先使用不同的DispatcherServlet怎么样?
<servlet>
<servlet-name>finance</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>finance</servlet-name>
<url-pattern>/finance/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>warehouse</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>warehouse</servlet-name>
<url-pattern>/warehouse/*</url-pattern>
</servlet-mapping>