Guns第三节 项目介绍


guns-admin是Guns管理系统

guns-core是其他模块提炼出来的公共的代码

guns-parent是maven的的父模块,父模块的作用就是管理其它的子模块,可以把我们依赖都提到parent,并且对我们依赖的版本做一个统一的维护。

当我们的其他模块引用pom.xml的时候,是不带版本号的


这就是parent模块的作用,他可以统一维护依赖的版本,


gun-rest本意是些一个app 服务端,提供rest API服务,权限和md5加密,


包结构的介绍

common包 包含其他包所公用的一些东西,比如annotation,constant(cache,dictmap,factory常量的生产工厂,state状态的一些枚举,还有常量类),exception,persistence(mapping,model实体类)


config包里面都是admin这个项目的配置,我们的配置都是基于java bean 的方式,大家可以看到,我们里面是没有spring的xml的配置的,我们都是@bean这样的注解写到这个java类里面了,所以说这个是配置文件


上图等同于<bean><bean>方式的配置

properties都是对应application.yml,   对应的属性映射到我们的java类里面,通过注解这样的方式,java类里面有个核心的注解@ConfigurationProperties


他读取了BEETLCONF_PREFIX为前缀的一些配置,并且spring加载,项目启动的时候,会读取这些配置并且注入到他相应的变量里面,举个例子,比如说 项目启动的时候会读取delimiterStatementStart这个变量,从哪儿读取的呢?从配置文件里面以beetl开头的page


从start这儿读取出来,并且放到这个变量delimiterStatementStart里面。

其他的变量也是一样的,这样呢我们在其他的配置里面或者其他的代码里面,调用application.yml里面的配置的时候就可以通过properties来调用,非常的方便,

然后接下来的这两个配置也是一样的


web就是我们web相关的配置,比如说我们的beetl的配置

core目录里面是Gun项目运行的一些核心机制,比如说GUNS运用到AOP:

异常拦截器,日志的拦截器,权限的检查

如何把用户通过角色,然后登陆进去看到不同的效果,这个就是permission aop,beetl里面就是beetl相关的一些工具类和beetle的配置,datascope是数据范围,这里面有一个数据范围的类和一个数据范围的拦截器,什么是数据范围呢?就是相同角色的用户,他们部门相同,那么他们看到的数据可能不一样。intercept,一个sessionIntercept和一个sessionTimeoutIntercept,这是两个不同的拦截器,静态调用session的意思是我们可以在我们的业务代码里面通过HttpSessionHolder.get()得到httpSession这个对象,方便我们在所有地方,任何代码里面方便的调用httpSession,sessionTimeoutIntercept就是验证session超时的拦截器,他会验证当前用户是否长时间没有操作,是否登陆超时了.configListenser就是项目启动的时候有一个监听,启动之后进行操作,比如说设置这一些变量


log就是业务记录日志的核心和机制,shiro就是权限管理,template是我们的代码生成器,util是工具类,我们可以看到在core模块里面也有util,core里的util是其他模块公用的工具类,admin里的util只在admin里面适用


modular包里面是我们的主要的业务代码,这个biz.service是一个测试代码,测试多数据源时候的一个测试代码,system是我们整个系统的核心的业务代码都在这里面,大家可以看到


factory主要是创建对象的工厂,transfer dto相当于transfer bean,他是我们的数据传输对象。

Warpper这个包的作用就是Guns有个独特的controller层,map+warpper的返回方式。

GunsApplication类是项目核心的启动类。

GunsServletInitializer类当我们打成war包的时候,Tomcat启动的时候,他就是一个核心的入口,我们的项目里面是没有web.xml的,因为Guns是Servlet3.0,支持不带web.xml的启动方式,GunsServletInitializer类就相当于是替代web.xml的启动方式,generater是生成实体的生成器,MyBatsiPlusGenerator是我们mybatisPlus生成器。

resources里面gunsTemplate,guns的代码生成器模板,都是beetl模板引擎的模板。

META-INF里面有一个properties配置,这个配置是beetl相关的配置,这个配置在什么时候生效呢,他是在开启spring的devtools的时候生效,开启devtools的时候我们需要把

配置一下,要不然beetl就会启动报错。

applicaton.yml分很多模块

profile就是在不同的运行环境运行不同的配置。用的时候我们只需要改一下开关spring.profiles.active+名称,激活哪个配置,打包之后就是哪个配置

ehcahe.xml就是缓存的配置

logback-spring.xml就是日志的配置

webapp里面就是我们页面相关的东西,static里面放的都是静态页面,web-inf.view里面放的是页面

common里面有封装了常用技术的js



Feng.js封装了js里面常用的方法 


tags标签,就是我们自定义的标签,


我们代码里面有#开头的标签,其实他就是我们封装的自定义的标签,这个标签就是对html代码的封装


一大串这样的html代码。

_container.html是html的容器,在写业务代码的时候,会有,它其实把这个页面省略了很多代码,省略container外面的代码


beetl在解析的时候就会找到这个变量,把layoutContent替换成具体的代码如下


也是对html的封装,主要体现在index.html里面,index页面就是我们的主页,主页的html由这些外部的框架,还有内部的这三个东西组成就相当于把_tab.html里面的html原样不动的放在这里,这样写的好处就是修改的时候非常方便

system里面就是我们所有业务界面用到的html和beetl模板引擎。


全局的拦截器

其他模块用到的pozo对象

封装了一下方便controller调用的一些东西

定义了 404,session超时的一些跳转

错误页面默认跳转,视图解析器就会渲染


跳转到404页面

就是返回前台的提示,提示里面包含code和massage,code就是错误码,message是提示信息

操作缓存的工具类

有一个fastjson的配置类

是一个简单的枚举

是一个方便操作数据库的工具类

异常的封装

把异常放到一个枚举类里面,这样我们好维护

多数据源的配置

是对节点的封装

分页用到的,bootStrap Table插件,

插件需要什么参数呢,PageBT封装的参数

是生成二维码的工具类

这个项目里面开源的工具类

防止xss攻击的机制


下面对数据库的设计进行介绍

把当前部门的所有的父级都列举出来,为了方便我们查找某一个部门的所有子部门,比如说我们查找总公司的子部门


乐观锁保留插件



md5,密码盐是对原密码进行一个混淆作用

猜你喜欢

转载自blog.csdn.net/zerolaw/article/details/81011899