SpringBoot浅析依赖管理与自动配置概念与使用

 更新时间:2022年10月17日 08:42:59   作者:一根头发学一年  
一般来讲SpringBoot项目是不需要指定版本,而SSM项目是需要指定版本,SpringBoot的核心依赖就是spring-boot-starter-parent和spring-boot-starter-web两个依赖,这篇文章主要介绍了SpringBoot依赖管理与自动配置概念与使用

说明:基于atguigu学习笔记。部分内容涉及上一章节,请参考以下链接。

上一章:Spring boot 介绍和简易入门

依赖管理

自动版本仲裁

在上一节创建Spring Boot项目时,看到,引入了一个父项目。如下:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
</parent>

父项目的主要作用是依赖管理。父项目已经声明了很多需要的依赖及其版本,子项目如果继承了父项目,则不需要再声明版本号(也称自动版本仲裁)。除非你不需要父项目的版本号。

点击查看父项目,可以看到,还有一个父项目是spring-boot-dependencies。如下:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.7.0</version>
</parent>

再点进去看到这个父项目维护了很多依赖的版本,如下:

<properties>
    <activemq.version>5.16.5</activemq.version>
    <antlr2.version>2.7.7</antlr2.version>
    <appengine-sdk.version>1.9.96</appengine-sdk.version>
    <artemis.version>2.19.1</artemis.version>
    <aspectj.version>1.9.7</aspectj.version>
    <assertj.version>3.22.0</assertj.version>
    <atomikos.version>4.0.6</atomikos.version>
    <awaitility.version>4.2.0</awaitility.version>
    <build-helper-maven-plugin.version>3.3.0</build-helper-maven-plugin.version>
    <byte-buddy.version>1.12.10</byte-buddy.version>
    <cache2k.version>2.6.1.Final</cache2k.version>
    <caffeine.version>2.9.3</caffeine.version>
    <cassandra-driver.version>4.14.1</cassandra-driver.version>
    <classmate.version>1.5.1</classmate.version>
    <commons-codec.version>1.15</commons-codec.version>
    <commons-dbcp2.version>2.9.0</commons-dbcp2.version>
    <commons-lang3.version>3.12.0</commons-lang3.version>
    <commons-pool.version>1.6</commons-pool.version>
    <commons-pool2.version>2.11.1</commons-pool2.version>
    <couchbase-client.version>3.3.0</couchbase-client.version>
    <db2-jdbc.version>11.5.7.0</db2-jdbc.version>
    <dependency-management-plugin.version>1.0.11.RELEASE</dependency-management-plugin.version>
    <derby.version>10.14.2.0</derby.version>
    <dropwizard-metrics.version>4.2.9</dropwizard-metrics.version>
    <ehcache.version>2.10.9.2</ehcache.version>
    <ehcache3.version>3.10.0</ehcache3.version>
    <elasticsearch.version>7.17.3</elasticsearch.version>
    <embedded-mongo.version>3.4.5</embedded-mongo.version>
  	<!-- 等等还有很多 -->

如果不想要父项目的版本,引入依赖时可以自己定义版本号,如下:

<properties>
    <mysql.version>5.1.43</mysql.version>
</properties>

starter启动器

上个章节,引入依赖时,只引入了spring-boot-starter-web这一个依赖。像这种spring-boot-starter-* 的依赖就是start启动器。他是一种场景的所有依赖集合描述,比如spring-boot-starter-web就是web开始所需要的所有依赖的集合描述。只要引入这一个依赖,就会把web开发场景所需要的依赖全都引入。

只要引入starter,这个场景的所有常规需要的依赖都自动引入。

注意像这种spring-boot-starter-格式的启动器一般是官方提供的。也可以自己创建,官方建议,自己创建的格式是-spring-boot-starter,比如很多第三方提供的简化开发的场景启动器。

自动配置

上面我们看到,当引入spring-boot-starter-web启动器的时候,spring boot会自动帮我们做很多配置。

1.自动引入Tomcat依赖并配好Tomcat。

2.自动配好SpringMVC: 引入并配置好SpringMVC全套组件。

3.自动配好Web常见功能,如:字符编码问题。

4.配置好默认的包结构: 主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来, 想要改变扫描路径,在@SpringBootApplication注解里使scanBasePackages属性指定,或者使用@ComponentScan注解。

@SpringBootApplication注解源码可以看到,@SpringBootApplication注解相当于以下3个注解:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan(“com.example”)

5.各种配置分配了默认值

6.按需加载所有自动配置项: 引入了哪些场景,这个场景的自动配置才会开启。SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面。

到此这篇关于SpringBoot浅析依赖管理与自动配置概念与使用的文章就介绍到这了,更多相关SpringBoot依赖管理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot使用Redis单机版过期键监听事件的实现示例

    SpringBoot使用Redis单机版过期键监听事件的实现示例

    在缓存的使用场景中经常需要使用到过期事件,本文主要介绍了SpringBoot使用Redis单机版过期键监听事件的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • 详解安装Eclipse Maven插件的几种方法

    详解安装Eclipse Maven插件的几种方法

    本篇文章主要介绍了详解安装Eclipse Maven插件的几种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • 详解Springboot中的异步、定时、邮件任务

    详解Springboot中的异步、定时、邮件任务

    这篇文章主要介绍了Springboot中的异步、定时、邮件任务,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • 老生常谈Java字符串进阶(必看篇)

    老生常谈Java字符串进阶(必看篇)

    下面小编就为大家带来一篇老生常谈Java字符串进阶(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • java中JSqlParser的使用

    java中JSqlParser的使用

    JSqlParse是一款很精简的sql解析工具,它可以将常用的sql文本解析成具有层级结构的语法树,本文主要介绍了java中JSqlParser的使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • 深入理解 Java注解及实例

    深入理解 Java注解及实例

    这篇文章主要介绍了深入理解 Java注解及实例的相关资料,希望通过本文大家能够掌握java注解的知识,需要的朋友可以参考下
    2017-09-09
  • MyBatis的五种批量查询实例总结

    MyBatis的五种批量查询实例总结

    为了提高代码的执行效率,我们有时需要采用批量查询的查询方法,下面这篇文章主要给大家介绍了关于MyBatis的五种批量查询的相关资料,需要的朋友可以参考下
    2023-02-02
  • JAVA实现连接本地打印机并打印文件的实现代码

    JAVA实现连接本地打印机并打印文件的实现代码

    这篇文章主要介绍了JAVA实现连接本地打印机并打印文件的实现代码,需要的朋友可以参考下
    2019-10-10
  • 最流行的java后台框架spring quartz定时任务

    最流行的java后台框架spring quartz定时任务

    近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将结合spring框架来介绍
    2015-12-12
  • Java发送报文与接收报文的实例代码

    Java发送报文与接收报文的实例代码

    这篇文章主要介绍了Java发送报文与接收报文,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03

最新评论