Spring Boot整合Web项目常用功能详解

 更新时间:2019年06月25日 09:22:30   作者:空山新雨  
这篇文章主要介绍了Spring Boot整合Web项目常用功能详解,在Web应用开发过程中,可以通过Spring Boot的Starter来将这些常用功能进行整合与集中维护,以达到开箱即用的目的。,需要的朋友可以参考下

前言

在Web应用开发过程中,一般都涵盖一些常用功能的实现,如数据库访问、异常处理、消息队列、缓存服务、OSS服务,以及接口日志配置,接口文档生成等。如果每个项目都来一套,则既费力又难以维护。可以通过Spring Boot的Starter来将这些常用功能进行整合与集中维护,以达到开箱即用的目的。

项目基于Spring Boot 2.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 对依赖进行声明,

<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>

这样,所有依赖的版本可以集中统一管理,在其它地方引用的时候可以省去版本的声明,如

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<optional>true</optional>
</dependency>

spring-boot-autoconfigure 项目

该项目是各功能自动配置的具体实现,以package的形式进行组织,如 tkmapper 包下实现了通用Mapper的自动配置,error 包下实现了错误处理的自动配置, 等等。

该项目继承了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 文件中,声明了所有自动配置类, 如下

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 依赖如下

<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的用途,这里可随意编写。

spring-boot-commons 项目

可将一些常用的工具类, 或共享类放到这个项目中。比如一些常量定义,加解密工具类等。

spring-boot-parent 项目

该项目将Web应用需要的一些常见功能整合进来,应用项目可继承该项目进行构建,从而直接引入相应的功能。

在接下来的spring boot系列博文中,将一一详细介绍各功能的整合集成与应用。同时会不断更新与完善,以达到能直接用于生产项目的水平。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java8中CompletableFuture的用法全解

    Java8中CompletableFuture的用法全解

    这篇文章主要给大家介绍了关于Java8中CompletableFuture用法的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • springboot项目引入外部jar包的详细图文教程

    springboot项目引入外部jar包的详细图文教程

    在项目中有时候需要引入外部jar包,启动运行,下面这篇文章主要给大家介绍了关于springboot项目引入外部jar包的详细图文教程,需要的朋友可以参考下
    2023-09-09
  • SpringBoot读取resource文件代码实例

    SpringBoot读取resource文件代码实例

    这篇文章主要介绍了SpringBoot读取resource文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java标识接口的使用方法

    Java标识接口的使用方法

    在本篇文章中小编给大家分享了关于Java标识接口的使用方法和教程内容,有需要的朋友们学习下。
    2019-01-01
  • Spring整合Junit的使用详解

    Spring整合Junit的使用详解

    这篇文章主要介绍了Spring整合Junit的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • springcloud安装rabbitmq并配置延迟队列插件的过程详解

    springcloud安装rabbitmq并配置延迟队列插件的过程详解

    本期主要讲解如何利用docker快速安装rabbitmq并且配置延迟队列插件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 关于springboot 配置文件中属性变量引用方式@@解析

    关于springboot 配置文件中属性变量引用方式@@解析

    这篇文章主要介绍了关于springboot 配置文件中属性变量引用方式@@解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • mybatis 运行时加载自定义mapper文件方式

    mybatis 运行时加载自定义mapper文件方式

    这篇文章主要介绍了mybatis 运行时加载自定义mapper文件方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • java将一个目录下的所有文件复制n次

    java将一个目录下的所有文件复制n次

    这篇文章主要为大家详细介绍了java将一个目录下的所有文件复制n次,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • SpringBoot用JdbcTemplates操作Mysql实例代码详解

    SpringBoot用JdbcTemplates操作Mysql实例代码详解

    JdbcTemplate是Spring框架自带的对JDBC操作的封装,目的是提供统一的模板方法使对数据库的操作更加方便、友好,效率也不错,这篇文章主要介绍了SpringBoot用JdbcTemplates操作Mysql
    2022-10-10

最新评论