2013-07-24 60 views
0

我试图在Spring MVC应用程序中处理多个Web模块。 假设我有两个模块:财务模块和仓储模块。 他们有自己的业务流程,但是有一些常见的流程,如LDAP认证和搜索......以及它们之间的依赖关系。 所以我想,让他们在一个单一的Web应用程序,有两个不同的requestmappings:/金融/ *和仓库/ *在Spring MVC应用程序中处理多个Web模块

我的问题是类似这样的: 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

是否要提供共享请求映射前缀?像所有以“/ finance/..”开头的FinanceControllers地图网址一样。

如何在第一个地方使用不同的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> 
相关问题