当前位置:首页 > 经验 >

springboot的starter原理(springboot starter核心组件)

来源:原点资讯(www.yd166.com)时间:2022-10-29 11:58:07作者:YD166手机阅读>>

前言

我们都知道,Spring的功能非常强大,但也有些弊端。比如:我们需要手动去配置大量的参数,没有默认值,需要我们管理大量的jar包和它们的依赖。

为了提升Spring项目的开发效率,简化一些配置,Spring官方引入了SpringBoot。

当然,引入SpringBoot还有其他原因,在这里就不过多描述了。

本文重点跟大家一起聊聊SpringBoot的starter机制,因为它太重要了。

springboot的starter原理,springboot starter核心组件(1)

1 为什么要用starter?

在SpringBoot还没有出来之前,我们使用Spring开发项目。如果程序需要连接数据库,我们一般会使用Hibernate或mybatis等ORM框架,这里我以Mybatis为例,具体的操作步骤如下:

  1. 到maven仓库去找需要引入的mybatis jar包,选取合适的版本。
  2. 到maven仓库去找mybatis-spring整合的jar包,选取合适的版本。
  3. 在spring的applicationContext.xml文件中配置dataSource和mybatis相关信息。

当然有些朋友可能会指正,不是还需要引入数据库驱动包吗?

确实需要引入,但数据库驱动有很多,比如:mysql、oracle、sqlserver,这不属于mybatis的范畴,使用者可以根据项目的实际情况单独引入。

如果程序只是需要连接数据库这一个功能还好,按上面的步骤做基本可以满足需求。但是,连接数据库可能只是庞大的项目体系中一个环节,实际项目中往往更复杂,需要引入更多的功能,比如:连接redis、连接mongodb、使用rocketmq、使用excel功能等等。

引入这些功能的话,需要再把上面的步骤再重复一次,工作量无形当中增加了不少,而且有很多重复的工作。

另外,还是有个问题,每次到要到maven中找合适的版本,如果哪次找的mybatis.jar包 和 mybatis-spring.jar包版本不兼容,程序不是会出现问题?

SpringBoot为了解决以上两个问题引入了starter机制。

2 starter有哪些要素?

我们首先一起看看mybatis-spring-boot-starter.jar是如何定义的。

springboot的starter原理,springboot starter核心组件(2)

可以看到它的META-INF目录下只包含了:

  • pom.protperties 配置maven所需的项目version、groupId和artifactId。
  • pom.xml 配置所依赖的jar包。
  • MANIFEST.MF 这个文件描述了该Jar文件的很多信息。
  • spring.provIDEs 配置所依赖的artifactId,给IDE使用的,没有其他的作用。

注意一下,没有一行代码。

我们重点看一下pom.xml,因为这个jar包里面除了这个没有啥重要的信息

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot</artifactId> <version>1.3.1</version> </parent> <artifactId>mybatis-spring-boot-starter</artifactId> <name>mybatis-spring-boot-starter</name> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-autoconfigure</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </dependency> </dependencies> </project>

从上面可以看出,pom.xml文件中会引入一些jar包,其中除了引入spring-boot-starter,之外重点看一下:mybatis-spring-boot-autoconfigure。

我们找到mybatis-spring-boot-autoconfigure.jar文件,打开这个文件。

springboot的starter原理,springboot starter核心组件(3)

里面包含如下文件:

  • pom.properties 配置maven所需的项目version、groupId和artifactId
  • pom.xml 配置所依赖的jar包
  • additional-spring-configuration-metadata.json 手动添加IDE提示功能
  • MANIFEST.MF 这个文件描述了该Jar文件的很多信息
  • spring.factories SPI会读取的文件
  • spring-Configuration-metadata.json 系统自动生成的IDE提示功能
  • ConfigurationCustomizer 自定义Configuration回调接口
  • MybatisAutoConfiguration mybatis配置类
  • MybatisProperties mybatis属性类
  • SpringBootVFS 扫描嵌套的jar包中的类

spring-configuration-metadata.json和additional-spring-configuration-metadata.json的功能差不多,我们在applicationContext.properties文件中输入spring时,会自动出现下面的配置信息可供选择,就是这个功能了。

springboot的starter原理,springboot starter核心组件(4)

首页 1234下一页

栏目热文

mybatis作用及特点(mybatis优点有哪些)

mybatis作用及特点(mybatis优点有哪些)

a、MyBatis 把 sql 语句从 Java 源程序中独立出来,放在单独的 XML 文件中编写,给程序的维护带来了很...

2022-10-29 11:45:02查看全文 >>

mybatis工作原理分析(mybatis工作原理及项目操作配置)

mybatis工作原理分析(mybatis工作原理及项目操作配置)

前言:mybatis是最近几年比较流行的操作数据库框架了,平时都只知道怎么去配置,怎么去用它,那你们知道它是如何实现的吗...

2022-10-29 12:11:32查看全文 >>

mybatis简介(mybatis的详细讲解)

mybatis简介(mybatis的详细讲解)

一. mybatisMyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache so...

2022-10-29 11:28:39查看全文 >>

mybatis面试题(java面试必背八股文)

mybatis面试题(java面试必背八股文)

点击上方"java全栈技术"关注,每天学习一个java知识点1. #{}和${}的区别是什么?#{}是预编译处理,${}...

2022-10-29 11:56:17查看全文 >>

mybatis详细讲解(mybatis操作步骤)

mybatis详细讲解(mybatis操作步骤)

废话不多说,直接进入文章。我们在使用Mybatis的时候,会在xml中编写SQL语句。如图:那么,MyBatis底层是如...

2022-10-29 11:57:34查看全文 >>

mybatisplus 代码生成器(mybatisplus代码生成器模板)

mybatisplus 代码生成器(mybatisplus代码生成器模板)

简介: 代码生成器,也叫逆向工程,是根据数据库里的表结构,自动生成对应的实体类、映射文件和接口。代码生成器,也叫逆向工程...

2022-10-29 12:13:45查看全文 >>

springboot菜鸟教程(菜鸟教程spring boot)

springboot菜鸟教程(菜鸟教程spring boot)

- 一、SpringBoot的starter简介 -1.1 什么是starter(场景启动器)在SpringBoot出现...

2022-10-29 12:02:31查看全文 >>

mybatis详解(mybatis简单示例)

mybatis详解(mybatis简单示例)

MyBatis缓存框架与事务详解一、缓存的概念1.1什么是缓存 存在内存中的临时数据。 将用户经常查询的数据放在缓存(内...

2022-10-29 11:50:24查看全文 >>

简单的灯笼怎么叠(叠小灯笼方法)

简单的灯笼怎么叠(叠小灯笼方法)

过年啦,家家户户挂灯笼,今天教大家折一款樱花灯笼,颜值非常高,中间是一个樱花球,主要是做法超级简单。先剪一张圆形的纸,直...

2022-10-29 11:35:53查看全文 >>

一张纸叠灯笼(一张纸折灯笼大全)

一张纸叠灯笼(一张纸折灯笼大全)

树姐姐昨天发布的3款简单的灯笼很受到大家的欢迎,我好开心哦。离中秋越来越近了,今天树姐姐再给大家分享一款组合型的中式手提...

2022-10-29 12:02:02查看全文 >>

文档排行