前言
一直以来写代码都是在别人写好的框架上写代码,其实我一直想自己搭一个框架试一试,正好有机会,我就试着自己搭一下,搭的好与坏我觉得不重要,重要的是在这次搭框架的过程中,一定能学习到很多东西。在这里我借鉴了网上很多大神的博客,主要参考的还是下面链接的博主博客,第一次搭建也许在大局观以及知识和经验的储备不足,如有什么错误的地方,望即时纠正,项目采用springboot多模块结构。
项目地址:
主要参考:
springboot基础学习:
创建Springboot基础结构
左侧选择Spring Initializr 后选择jdk的版本,我这里用的是jdk1.8版本
根据自己的命名规范设置Group和Artifact,并选择Type类型为Maven POM
选择依赖那不选择任何依赖直接下一步,直到定义项目的名称,以及项目存储的地方,点击finish完成本次创建,记得选择本项目的存储位置,最终项目的结构如此。
父pom文件中标签中的jar要改成pom,一定要修改,否则各个模块之间无法传递依赖
com.ywh springcloud 0.0.1-SNAPSHOT pom 复制代码
创建Module(子模块)
在根据参考的博客和网上一些博客。分模块有很多种分法,大多数是根据controller、service、dao等等分模块的,这种的分法我认为分的太细了,这种的我觉得适用于大公司,人多的那种,每个人负责一个模块进行开发,出了错误也可以快速定位,并且有具体的人负责修改就可以了(也有可能是我的认知太浅薄,理解错了)。
我暂时主要分为:
- ywh-starter-core —— 用来放自己写的业务代码
- ywh-starter-cache —— 用来放项目缓存
- ywh-starter-security —— 用来做权限认证
- ywh-starter-common —— 放一些工具类,以及一些基础的常量、变量、枚举类等
在项目上右键>New>Module,首先创建core子模块
创建Module也是springboot项目,不过在选择项目保存的时候一定要在本项目中新建一个文件来保存我们的子模块,这样才不会模块的结构跑到我们的外面来,如下图
按着以上方式创建ywh-starter-core,ywh-starter-cache,ywh-starter-common,ywh-starter-security等模块,创建所有模块以后的项目结构如下:
修改项目通用配置
项目创建好以后我们对项目的所有pom.xml文件修改一下,首先是子模块pom.xml中继承父项目并且把spring-boot-starter和spring-boot-starter-test依赖删除即可,因为我们会在父pom.xml中添加web依赖和test依赖,子模块继承以后会使用父pom.xml的依赖,子模块以core为例子,其他按着core修改即可,其次是父pom.xml中添加子模块的配置,父pom就是上图中最外侧的pom文件
复制代码 com.ywh springcloud 0.0.1-SNAPSHOT ../pom.xml
ywh-starter-cache ywh-starter-common ywh-starter-core ywh-starter-security 复制代码 UTF-8 UTF-8 1.8
确定模块之间的依赖关系
子模块之间也是有依赖关系的,否则在core中是无法调用其他模块中的东西的,所以我这里的依赖关系是core->security->cache->common,这里的依赖关系先暂时定下,以后有变化时可以再进行确定修改,一定要注意不要循环依赖,以core为例,修改pom.xml如下:
复制代码 com.ywh security 0.0.1-SNAPSHOT
在父pom.xml中引入一些我们公用的依赖分别如下,关于什么依赖可以放在父pom.xml下什么可以放在其他子模块下,我是这么理解的,当一个依赖有两个以上的子模块使用的时候,就要把这个依赖提出来放到父pom下,这个依赖只有这一个子模块使用,就可以单独放在某一个子模块下。当然了为了图方便可以把所有的依赖都放在父pom.xml中。
引入公共依赖
在父pom文件中引入一些公用依赖
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test com.alibaba fastjson 1.2.53 commons-io commons-io 2.6 commons-fileupload commons-fileupload 1.3.3 commons-collections commons-collections 3.2.1 commons-codec commons-codec 1.11 org.apache.commons commons-lang3 3.8.1 复制代码 org.apache.commons commons-pool2 2.6.0
创建yml文件并修改banner图
Spring Boot使用一个全局的配置文件application.properties或application.yml,放置在src/main/resources目录下。我们可以在这个全局配置文件中对一些默认的配置值进行修改,把所有的application.properties的后缀名修改成.yml,这个不是必须的,如果习惯.properties的方式也可以不修改,是一样的,具体有哪些配置可到官网查找,有非常多的配置,不过大部分使用默认即可。 具体有哪些配置可到官网查找,有非常多的配置,不过大部分使用默认即可
我增加了开发环境(dev)和生产环境(prod)的配置文件,并通过在application.yml中设置spring.profiles.active=dev来指定当前环境,yml文件必须以application开头接 -*。
替换springboot项目启动时控制台显示的banner图,这个网站生成一个自己项目的banner。创建banner.txt并放到resources根目录下,我是以core启动项目的,所以我放到了core的子模块下,启动以后就能看到修改后的banner图了。
修改启动类CoreApplication,扫描配为com.ywh,如果不增加,在其他的模块中添加的配置类会导致扫描不到的情况
@SpringBootApplication(scanBasePackages = "com.ywh")复制代码
集成Druid + Mybatis-Plus
- 链接:
实现基础controller、service、前端封装返回json体等
- 链接:
日志自定义和全局异常处理
- 链接:
集成Redis缓存
- 链接:
集成SpringSecurity
- 链接:
- 链接:
整合vue实现前后端分离
- 链接:
使用docker + Nginx打包部署
- 链接:
结语
这一篇笔记终于写完了,从项目的创建到部署的流程全部走了一遍,实现了从0-1,我知道这里的问题还有很多;在搭建这个框架之间解决了以前有的疑问,但是又多了些新的疑问,这都需要之后的学习来解答,成功不是一蹴而就,要慢慢来;我还想把这个框架丰富一下,修改成微服务的架构,下一阶段学习
- springcloud和dubbo
- redis进阶
- nginx的系统学习
- es搜索引擎
- 消息队列
等等吧,一些中间件的学习
回看我前几章的笔记,其实还比较墨迹的,而且代码还不优雅(因为理解的还是不够透彻吧),什么叫做优雅,在我看来就是没有多余的操作,简单明了,不会把一件事情弄得很复杂,这一点还需要很大的努力,其实呢在我写这些笔记的时候,我的想法就是,一是给自己记笔记,以后回看的时候有一个记忆点,二呢就是给像我一样迷茫不知道该学什么的提供一种思路,毕竟我这个所谓的个人框架只是把一些东西放在一起了,有点东北乱炖的感觉,但是最起码可以当一个参考,这里面用到的东西还是值得一学的。
我觉得作为一个年轻人,要不断的充实自己的知识,只有学的更多,做东西的时候才能思考的更多,解决的办法也就更多。
我喜欢编程,编程让我有成就感,让我有学下去的动力。