Foxnic-Web —— 可插拔模块的菜单控制

Foxnic-Web —— 可插拔模块的菜单控制
概述

  Foxnic-Web 的设计就是业务模块下 Maven 依赖层面可插拔,即只要把对应的模块加入启动项目的 Maven 依赖中那么启动项目就拥有了插入模块的功能,反之亦然。因此,在 Foxnic-Web 的业务模块(Maven Module) 中需要做一些特殊处理,使业务模块插拔时同时体现在菜单上。

  本文中的示例代码均可在 https://gitee.com/LeeFJ/foxnic-samples 项目中找到。

菜单控制

  Foxnic-Web 在每个业务模块组的 Service 层需要引入 ModuleAuthority 类的子类,如图所示:

  用这个类的 getAuthorities 方法返回其所在模块的菜单权限Key,代码如下所示:

1@Component 2public class ContractAuthority extends ModuleAuthority { 3 /** 4 * 返回最顶层菜单的权限Key 5 * */ 6 @Override 7 public String[] getAuthorities() { 8 return new String[] { 9 // 合同管理 10 "contract" 11 }; 12 } 13}

  以上代码在 getAuthorities 方法中返回一个数组,这个数组包含当前模块所涉及的菜单的最顶层菜单的权限Key,权限Key在菜单管理定义,如图所示:

  配置完毕,启动应用后就可以获得对应的菜单,如图所示:

参数配置

  然而,有些时候我们希望这种菜单按模块插拔是可控的。在非生产环境,我们希望展示所有的菜单,而在生成环境我们希望只展示已经插入的模块的菜单。

  菜单展示的位置主要有两个地方,一个是首页,另外一个是菜单管理以及角色管理选择权限时展示的菜单。所以,Foxnic-Web 通过两个参数控制这两个位置,如图所示:

  修改参数的配置值,重新登录后即可生效。

小结

  通过本节,可以了解到 Foxnic-Web 的模块是可插拔的,而且通过参数控制,菜单也可随已插入的模块动态发生改变。

相关项目

  https://gitee.com/LeeFJ/foxnic

  https://gitee.com/LeeFJ/foxnic-web

  https://gitee.com/lank/eam

  https://gitee.com/LeeFJ/foxnic-samples

官方文档

  http://foxnicweb.com/docs/doc.html

点赞
收藏

评论区

加载中...

相关推荐

java面试总结1

1.自我介绍:我是\\\工作了\\年先后在\\公司和\\公司工作先后做过\\和\\项目2.简单介绍一下\\项目为了解决\\问题,开发了\\系统,该系统主要由\\部分组成我参与了\\模块的开发简单说一下该模块的业务及设计简单介绍一下项目的整体架构,根据所在模块

springboot的maven多模块项目架构微服务搭建——构建多模块项目(依赖方式)

  总想对微服务架构做一个小小的总结,不知如何下手,最近觉得还是从搭建微服务的过程来入手,对于springboot的maven项目从构建多模块架构进而衍化为常用的微服务架构来做个记录吧。  首先,创建多个springboot项目,项目结构如图:      !(https://img2018.cnblogs.com/blog/1305004/201

Foxnic-Web —— 模块的多版本支持

站在产品角度,如何满足不同客户的需求定制?如何积累丰富的业务功能,尽可能复用避免重复开发?针对最近实施的几个客户,FoxnicWeb为模块增加了多版本特性,在一定程度上解决了甲方需求的多样性和差异性。  FoxnicWeb模块多版本主要是从UI界面和Service层着手。

面向对象设计原则之 - 低耦合

耦合到底是什么?耦合(或者称为依赖)是程序模块之间的依赖程度。从定义上看,耦合和内聚是相反的:内聚关注模块内部的元素的结合程度耦合关注模块之间的依赖程度理解耦合的关键有两点:什么是模块?模块和内聚里面提到的模块是一样的,耦合中的模块其实也是可大可小的。常见的模块有函数,类,包,子模块,子系统等什么是依赖?依赖这个词很好理解,通俗地讲,就是

Openresty常用指令和参数

参考文档:https://www.nginx.com/resources/wiki/modules/lua/nginxapiforluaNginxLua模块指令:Nginx共11个处理阶段,而相应的处理阶段是可以做插入式处理,即可插拔式架构;另外指令可以在http、serve

ES6 模块化(Module)export和import详解

ES6模块化(Module)export和import详解ES6在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代现有的CommonJS和AMD规范,成为浏览器和服务器通用的模块解决方案。ES6模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。CommonJS和AMD模块,都只能