一个具有多角度应用架构的项目

时间:2014-12-03 10:58:16

标签: java angularjs spring maven

我需要开发一个包含几个AngularJS应用程序的新项目,我对项目架构有疑问。

该解决方案将表现为5 webapp(暂时),客户可以选择他想要的模块。这些应用程序仅在其网络上可用。

我想了两个解决方案

  • 第一个解决方案:发展5战争(根据客户需求轻松部署战争)

  • 第二个解决方案:进行一场独特的战争(并在数据库中配置哪些应用程序可用)

关于第一个解决方案:

我想为每个webapp +一个“核心”模块创建一个maven模块,该模块将包含在每个webapp模块中,并包含spring配置(每个webapp之间95%相同),实体,dao和一些共享服务。你有没有看到任何问题以这种方式进行?

关于第二个解决方案

实际上我甚至不知道该怎么做但是我认为它是可行的(可能有一个http过滤器?)

那么知道我对可维护性优于性能的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:0)

基本上你可以使用的是一个带有前端层,服务层和DAO层的项目。

将其中三个作为单独的maven项目准备,然后将它们添加为maven依赖项或在单个项目中创建适当的包结构。

在前端,您可以使用带有切换页面的单个项目,而不是使用5个不同的项目。从切换页面,您可以借助弹簧配置的mvc-dispatcher将请求定向到您想要的相应应用程序。

我建议的前端文件夹结构如下图所示,

-webapp 
 |_web-inf
  |_pages
   |_app
    |_project A
    |_project B
     |_scripts
      |_projects B's sub module A
      |_projects B's sub module B
       |_controllers
       |_factories
       |_model
       |_services
       |_views
      |_projects B's sub module C
      |_projects B's sub module D
      |_projects B's sub module E
    |_project C
    |_project D
    |_project E

您可以使用mvc-dispatcher在您的应用程序中映射资源,如下所示

<mvc:resources mapping="/projectA/scripts/**" location="/WEB-INF/pages/app/projectA/scripts/"/>
<mvc:resources mapping="/projectB/scripts/**" location="/WEB-INF/pages/app/projectB/scripts/"/>
<mvc:resources mapping="/projectC/scripts/**" location="/WEB-INF/pages/app/projectC/scripts/"/>
<mvc:resources mapping="/projectD/scripts/**" location="/WEB-INF/pages/app/projectD/scripts/"/>
<mvc:resources mapping="/projectE/scripts/**" location="/WEB-INF/pages/app/projectE/scripts/"/>

希望这会有所帮助