我需要开发一个包含几个AngularJS应用程序的新项目,我对项目架构有疑问。
该解决方案将表现为5 webapp(暂时),客户可以选择他想要的模块。这些应用程序仅在其网络上可用。
我想了两个解决方案
第一个解决方案:发展5战争(根据客户需求轻松部署战争)
第二个解决方案:进行一场独特的战争(并在数据库中配置哪些应用程序可用)
关于第一个解决方案:
我想为每个webapp +一个“核心”模块创建一个maven模块,该模块将包含在每个webapp模块中,并包含spring配置(每个webapp之间95%相同),实体,dao和一些共享服务。你有没有看到任何问题以这种方式进行?
关于第二个解决方案
实际上我甚至不知道该怎么做但是我认为它是可行的(可能有一个http过滤器?)
那么知道我对可维护性优于性能的最佳解决方案是什么?
答案 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/"/>
希望这会有所帮助