应用模块化
#
应用模块化通常我们在进行应用开发过程中,会按功能或其他维度进行模块化封装,但这些封装一般依赖开发人员自行协商约定或按公司规定进行模块化开发。 模块之间的耦合关系根据业务逻辑和开发人员的思路不同,可能会是紧耦合,也可能是松耦合,不同的团队之间可能也没有一致的标准。 本框架为上述场景提供了模块化的开发方案,方便实施业务模块化和团队任务分工。
#
模块设计- 定义模块的包名,每个模块需要有独立的包,多个模块不要在相同的包。
- 继承AppModule.class,实现模块核心类,该类需要直接放在模块包下,不能放在子包下。
- 根据模块实际需要,实现几个特定方法:initialize()模块初始化、verifyInstallation()模块安装状态校验、install()模块安装、uninstall()模块卸载、upgrade()模块升级、destroy()模块销毁等。
请看下面的实例:
下面是第二个模块,和上面稍有不同,演示了安装调用的过程
#
模块配置模块的配置有种方式:
- 单独定义一个和模块类名一样的yaml配置文件,例如:
如果上述配置文件是不需要改动的,可以放在对应的模块下的resources下的config文件夹下,和模块一起打入Jar包。如果配置项是需要后续经常变更的,建议放到工作空间的配置目录下。
- 如果配置项较少,可以直接定义在调用该模块的应用的主配置文件中,例如:
#
模块注册- 通常模块封装在独立的包中,有单独Jar包,而主应用是在另外的包中,所以需要先在pom中引入模块:
上面引入了2个模块,first-module和second-module,具体根据实际情况引入。
- 然后在应用中通过静态方法registerModules注册模块。
启动该应用后,各模块下的资源会被启用,service和controller也会自动注册和映射。
#
多应用如果希望将应用的服务分拆在不同的域名或端口下提供服务,一种方法是拆分应用变成多个独立的应用,这里框架提供了另一种方法,多应用并行。 多应用适合于主应用如果有辅助型的轻应用时,可以将他们挂接在一起,并行提供服务,而且应用间还可以通讯和资源共享。见下面的实例:
上面定义了一个轻应用,将工作空间下的/static/images/目录绑定在localhost域名下,通过8081端口暴露服务。然后我们稍微修改一下上面模块化实例的主应用,让它挂载这个轻应用。
启动该应用,我们就可以看到主应用绑定在8080端口,轻应用绑定在localhost的8081端口,主应用可以通过IP和域名都能访问,而轻应用因为绑定了localhost域名,只能通过localhost:8081来访问。
#
更多文档以上为本框架提供的常用模块化应用介绍,还有更多模块化方面的文档将在后续不断完善,重点内容将以专题形式提供。