种子项目详解
引言
在上一篇文章简单讲解了种子项目搭建,但是项目搭建起来是为了方便我们后续开发的。因此了解整个项目的架构,以及各个Maven模块是如何各司其职、相互依赖,是至关重要的。
这里分成两块介绍
- lenosp自带的内容
- 新增扩展的内容
lenosp自带的内容
首先我们看看lenosp脚手架自带的Maven模块有哪些
- len-admin:这是博客管理员的模块,这里用不上,不管
- len-blog:这是博客模块,同上
- len-core
- len-sys
- len-web
下面主要讲讲len-core
、len-sys
、len-web
这三个模块。
len-core
何谓core?core在英文中的意思是核心、要点,而在该项目中,len-core也是整个项目的核心。我们先来看看文件结构
可以看到,这里有四个大包base
、exception
、freemarker
、redis
,以及一个util工具包,还有一个validator
参数校验分组接口包。
base包
base即基础,也就是抽取通用部分封装成的基础类,让其他类去继承之,减少重复代码。这里有通用Mapper的配置(BaseMapper
),以及service层通用的方法(BaseService
),而BaseController
中则有权限异常处理、时间格式化和ajax请求的判断。
至于下面的三个Currentxxx则是后台管理系统的菜单、角色、用户实体类。剩下两个不知道…
exception包
该包下是自定义的一些异常,以及统一异常处理类GlobalExceptionHandler
。
freemarker包
该包下是Freemarker模板引擎的一些配置。
redis包
redis的一些常用方法封装,例如get\set\del
util包
这里有很多工具类,其中的功能大都可以顾名思义。这里就不详细展开讲了。
validator
校验分组接口定义。有时候一个类对于不同的接口需要定义多种不同的校验方式,例如add不需要id,而update需要id,这里可以使用接口区别校验。
pom.xml
每个Maven模块都会带的xml配置文件,用于引入依赖、管理多模块依赖。以下就不再叙述。
len-sys
sys是系统的缩写。这里也就是系统运行所依赖的类集合。文件结构如下:
学过Javaweb三层架构的同学应该很清楚了,controller、service、mapper即分别对应三层。而entity是实体类。下面再来看看core
包
core包
-
annotation
注解定义,这里是日志注解的定义。用于接口上,采集日志。
-
BootListener
监听器,用于监听定时任务执行情况、bean初始化情况以及Servlet初始化情况。
-
filter
过滤器,包括后台管理系统登录所需的验证码拦截、校验用户是否已授权
-
quartz
定时任务定义、配置,具体不说。
-
shiro
shiro安全框架登录认证
LoginRealm
定义,以及Principal
用户主体、RetryLimitCredentialsMatcher
验证器,限制尝试登陆次数,防止暴力**
resources
看完core我们继续看resources
,学过SpringBoot的同学都知道这是放资源文件的地方。
-
ftl
该包是存放ftl后缀的模块页面的文件夹
-
mapper
存放mapper.xml文件的文件夹
-
plugin
存放前端使用的框架的文件夹,例如
bookstrap
、layui
…
len-web
该模块是也就是我们所说的controller层的一些配置以及application.yml
的配置。
挑几个懂的出来说说
- CorsConfig:配置跨域
- pageHelperConfig:此方案可替代 application.yml中 pagehelper配置
- SwaggerConfig:Swagger接口文档配置
- WebMavConfig:拦截器资源放行以及图片上传路径定义
- TransactionalConfig:事务配置
- ShiroConfig:Shiro安全框架配置
- DruidConfig:数据源Druid配置
差不多就这些吧。可以自己点进源码详细看看
自己扩展的模块
我们使用lenosp脚手架当然是为了方便开发,而我们开发可以自己新开模块再开发,而不要和脚手架自带的模块混杂在一起,显得混乱。
这五个模块其实很好理解了,就是三层架构拆分成了Maven多模块开发,不用多说了吧。
后记
最后,再讲讲几个注意的点。
- 因为用到了Maven多模块开发,所以各模块的依赖关系要理清楚。否则编译运行可能都不能通过
- 启动在len-web中的
Application
启动类的主方法中 - 数据库等yml配置也在len-web模块
至此,我们可以安心开发了0.0