当前位置 : 主页 > 编程语言 > java >

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

来源:互联网 收集:自由互联 发布时间:2023-01-30
目录 依赖管理 自动版本仲裁 starter启动器 自动配置 说明:基于atguigu学习笔记。部分内容涉及上一章节,请参考以下链接。 上一章:Spring boot 介绍和简易入门 依赖管理 自动版本仲裁
目录
  • 依赖管理
    • 自动版本仲裁
    • starter启动器
  • 自动配置

    说明:基于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依赖管理内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

    上一篇:Java设计模式之备忘录模式
    下一篇:没有了
    网友评论