Spring Boot整合Web项目常用功能详解
前言
在Web应用开发过程中,一般都涵盖一些常用功能的实现,如数据库访问、异常处理、消息队列、缓存服务、OSS服务,以及接口日志配置,接口文档生成等。如果每个项目都来一套,则既费力又难以维护。可以通过SpringBoot的Starter来将这些常用功能进行整合与集中维护,以达到开箱即用的目的。
项目基于SpringBoot2.1.5.RELEASE版。
项目地址
整个项目分为如下几部分:
- spring-boot-autoconfigure:具体的各功能实现,每个功能通过package的形式组织
- spring-boot-commons:一些公共的工具类或共享类
- spring-boot-dependencies:依赖的集中维护管理,集中管理各个依赖的版本号
- spring-boot-parent:提供一个基本的父项目,web服务项目可通过继承该项目创建
- spring-boot-starters:各功能的starter项目,引入相应starter即引入相应功能
spring-boot-dependencies项目
该项目主要是对所有依赖进行集中定义。通过dependencyManagement对依赖进行声明,
org.springframework.boot spring-boot-dependencies ${spring-boot.version} import pom ... cn.jboost.springboot spring-boot-commons ${base-spring-boot.version}
这样,所有依赖的版本可以集中统一管理,在其它地方引用的时候可以省去版本的声明,如
org.springframework spring-webmvc true
spring-boot-autoconfigure项目
该项目是各功能自动配置的具体实现,以package的形式进行组织,如tkmapper包下实现了通用Mapper的自动配置,error包下实现了错误处理的自动配置,等等。
该项目继承了spring-boot-dependencies,在项目的pom.xml中,依赖部分声明类似于
org.springframework spring-webmvc true ... org.springframework spring-jdbc true
不需要再指定版本号。通过将optional设置为true,表示该依赖不会进行传递,即另外一个项目引用该项目时,optional的依赖不会被传递依赖过去。
在resources/META-INF/spring.factories文件中,声明了所有自动配置类,如下
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
spring-boot-starters项目
该项目包含按功能划分的多个子项目,主要用来引入依赖以达到自动配置的依赖条件,使引入对应starter时,能让自动配置生效。如通用Mapper集成的tkmapper-spring-boot-starter依赖如下
org.springframework spring-jdbc tk.mybatis mapper org.mybatis mybatis org.mybatis mybatis-spring
同时在resources/META-INF/spring.provides里声明了该starter的用途,这里可随意编写。
spring-boot-commons项目
可将一些常用的工具类,或共享类放到这个项目中。比如一些常量定义,加解密工具类等。
spring-boot-parent项目
该项目将Web应用需要的一些常见功能整合进来,应用项目可继承该项目进行构建,从而直接引入相应的功能。
在接下来的springboot系列博文中,将一一详细介绍各功能的整合集成与应用。同时会不断更新与完善,以达到能直接用于生产项目的水平。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。