在Web应用开发过程当中,通常都涵盖一些经常使用功能的实现,如数据库访问、异常处理、消息队列、缓存服务、OSS服务,以及接口日志配置,接口文档生成等。若是每一个项目都来一套,则既费力又难以维护。能够经过Spring Boot的Starter来将这些经常使用功能进行整合与集中维护,以达到开箱即用的目的。html
项目基于Spring Boot 2.1.5.RELEASE 版。
项目地址: https://github.com/ronwxy/base-spring-bootgit
整个项目分为以下几部分:github
该项目主要是对全部依赖进行集中定义。经过 dependencyManagement 对依赖进行声明,web
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <scope>import</scope> <type>pom</type> </dependency> <dependency> <groupId>cn.jboost.springboot</groupId> <artifactId>spring-boot-commons</artifactId> <version>${base-spring-boot.version}</version> </dependency> ... </dependencies> </dependencyManagement>
这样,全部依赖的版本能够集中统一管理,在其它地方引用的时候能够省去版本的声明,如redis
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <optional>true</optional> </dependency>
该项目是各功能自动配置的具体实现,以package的形式进行组织,如 tkmapper 包下实现了通用Mapper的自动配置,error 包下实现了错误处理的自动配置, 等等。spring
该项目继承了spring-boot-dependencies, 在项目的 pom.xml 中,依赖部分声明相似于数据库
<dependencies> <!-- spring denpendencies --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <optional>true</optional> </dependency> ... </dependencies>
不须要再指定版本号。经过将optional设置为true,表示该依赖不会进行传递,即另一个项目引用该项目时,optional的依赖不会被传递依赖过去。缓存
在 resources/META-INF/spring.factories 文件中,声明了全部自动配置类, 以下springboot
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.jboost.springboot.autoconfig.tkmapper.MapperAutoConfiguration,\
cn.jboost.springboot.autoconfig.aoplog.AopLoggerAutoConfiguration,\
cn.jboost.springboot.autoconfig.alimq.config.AliMQAutoConfiguration,\
cn.jboost.springboot.autoconfig.qiniu.QiniuAutoConfiguration,\
cn.jboost.springboot.autoconfig.swagger.Swagger2AutoConfiguration,\
cn.jboost.springboot.autoconfig.druid.DruidAutoConfiguration,\
cn.jboost.springboot.autoconfig.error.exception.ExceptionHandlerAutoConfiguration,\
cn.jboost.springboot.autoconfig.alimns.MnsAutoConfiguration,\
cn.jboost.springboot.autoconfig.redis.RedisClientAutoConfiguration,\
cn.jboost.springboot.autoconfig.web.CORSAutoConfiguration
该项目包含按功能划分的多个子项目,主要用来引入依赖以达到自动配置的依赖条件,使引入对应starter时,能让自动配置生效。如通用Mapper集成的 tkmapper-spring-boot-starter 依赖以下微信
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </dependency> </dependencies>
同时在 resources/META-INF/spring.provides 里声明了该starter的用途,这里可随意编写。
可将一些经常使用的工具类, 或共享类放到这个项目中。好比一些常量定义,加解密工具类等。
该项目将Web应用须要的一些常见功能整合进来,应用项目可继承该项目进行构建,从而直接引入相应的功能。
在接下来的spring boot系列博文中,将一一详细介绍各功能的整合集成与应用。同时会不断更新与完善,以达到能直接用于生产项目的水平。
Spring Boot入门到实战汇总:http://www.javashuo.com/article/p-rfindngc-ms.html
个人我的博客地址:http://blog.jboost.cn
个人头条空间: https://www.toutiao.com/c/user/5833678517/#mid=1636101215791112
个人github地址:https://github.com/ronwxy
个人微信公众号:jboost-ksxy
—————————————————————————————————————————————————
欢迎关注个人微信公众号,及时获取最新分享