1. 前言
目前 Spring Boot 曾经成为支流的 Java Web 开发框架,熟练掌握 Spring Boot 并可能依据业务来定制 Spring Boot 成为一个 Java 开发者的必备技巧,然而总是零零碎碎不够零碎,所以萌发了从零搭建一个后端脚手架的想法。并把这个过程中的细节思路和之前的一些文章联合起来展示给大家,心愿可能实实在在帮忙学习 Spring Boot 的同学,当然能力无限如果有不足之处还请多多指教。
2. 面向的群体
首先,这个定位不是齐全没有接触过 Spring Boot 的初学者,因为 Spring Boot 的简略入门并不是特地难,找一些其余大佬的入门教程学习一阵就能够很快的入门;而是面向具备 Spring Boot 的学习教训和不够纯熟的同学们,同时提供一些能够开箱即用的解决方案到理论开发中。
3. 我的项目构造介绍
其实我不太喜爱那种相互依赖整了好几个模块,DAO、Service、Controller各搞一个层,而后层层依赖。对于单体我的项目来说这种构造把简略的事件复杂化了,容易导致依赖管理混乱。所以个别的简略我的项目我都倡议采纳上面的构造:
kono-dependencies是一个依赖版本治理的模块,负责 kono-app 所有的依赖版本、依赖选型的治理。原则上 kono-app 所有的依赖都应该来自 kono-dependencies 而且版本从 kono-dependencies 继承,这样能做到依赖版本的集中控制,使得技术选型和兼容性失去保障。
以 Maven 为例,kono-dependencies只会蕴含一个 pom.xml,而且打包形式packaging
只能是 pom
。所有的依赖都被dependencyManagement
治理。
<groupId>cn.felord</groupId>
<artifactId>kono-dependencies</artifactId>
<version>1.0.0.RELEASE</version>
<!-- 打包形式 -->
<packaging>pom</packaging>
<dependencyManagement>
<!-- 被治理的依赖 -->
</dependencyManagement>
这里有一个小技巧,咱们把 Spring Boot 的父依赖退出治理,就等于把我的项目的 Spring Boot 所有的官网 starter 纳入了治理:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${springboot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 其它依赖 -->
</dependencies>
</dependencyManagement>
当然如果有业务须要能够分更多的模块,然而依赖治理肯定要清晰、可控。
4. 版本号
版本号的规定也是很有学识的。这里我选用了最容易了解的形式,也是 Spring Boot 采纳的版本号命名格调。
- Major 主版本号,当有非兼容性的变更时,递增主版本号。
- Minor 次版本号,当以可向后兼容的形式减少了性能时,递增次的版本号。
- Patch 补丁版本号,当有向后兼容的 bug 修复时,递增补丁版本号。
- Label 标记,用来辨别开发版、快照版、里程碑版、正式发行版。
5. 技术选型
以下都是 Java 技术栈特定场景下的罕用抉择:
- springboot 根底整合框架
- servlet4 web 规范
- undertow 或者 tomcat web 容器
- spring cache 缓存形象层
- spring security 平安框架
- json web token 平安框架 token 技术
- mybatis plus 3 ORM加强
- spring data jpa (选)
- redis 缓存中间件
- mysql 数据库
- mapstruct bean 转换器,编译期应用
- lombok bean 简化工具
- swagger2 文档(开发测试)
- docker 容器技术
在一开始,这外面的一些技术并不会集成进去,随着迭代会在适合的机会退出它们,甚至会退出这外面没有的技术栈。
6. 最初
通过从零搭建脚手架的过程您能够循序渐进的学到如何整合一些性能到我的项目中,同时还能看到一些理论开发中能力遇到的一些问题以及解决这些问题的思路。同时如果在这个过程中您有好的倡议和问题也能够和我进行沟通,感激继续关注,共同提高。
关注公众号:Felordcn 获取更多资讯
集体博客:https://felord.cn