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

目录
  • 依赖管理
    • 自动版本仲裁
    • 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依赖管理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot自动配置深入探究实现原理

    目录 一.什么是springboot自动配置 二.Starter组件 三.三大注解 四.@EnableAutoConfiguration 五.SpringFactoriesLoader 说明:在阅读本篇文章之前建议大家先详细学习一下spring的相关知识,有助于更深刻的理解spirngboot的配置原理. 一.什么是springboot自动配置 SpringBoot通过@EnableAutoConfiguration注解开启自动配置,对jar包下的spring.factories文件进行扫描,这

  • SpringBoot自动配置与启动流程详细分析

    目录 一.自动配置 1. @ComponentScan 2. @SpringBootConfiguration 3. @EnableAutoConfigeration 4. @Condition 总结原理 启动流程 一.自动配置 主启动类 //@SpringBootApplication 来标注一个主程序类 //说明这是一个Spring Boot应用 @SpringBootApplication public class SpringbootApplication { public static

  • SpringBoot自动配置源码深入刨析讲解

    目录 自动配置底层源码分析 总结 自动配置底层源码分析 本次springboot源码来自2.6.6版本. @EnableAutoConfiguration源码解析 在springboot中,当我们引入某个依赖,就可以直接使用依赖里面的类进行自动注入,不需要像ssm框架那样在xml文件中配置各种bean,然后进行关联.像这样我们称之为自动配置.那么自动配置到底配了什么? SpringBoot中的自动配置,更多的是配置各种Bean,同时对于端口号这些配置,一些特定属性SpringBoot也是会提供一

  • Java SpringBoot自动配置原理详情

    目录 SpringBoot的底层注解 配置绑定 自动配置原理入门 SpringBoot的底层注解 首先了解一些SpringBoot的底层注解,是如何完成相关的功能的 @Configuration 告诉SpringBoot被标注的类是一个配置类,以前Spring xxx.xml能配置的内容,它都可以做,spring中的Bean组件默认是单实例的 #############################Configuration使用示例###############################

  • SpringBoot自动配置原理分析

    目录 前言 一.启动类 1.1.@SpringBootConfiguration 1.2.@EnableAutoConfiguration 1.3.@ComponentScan 1.4.探究方向 二.@SpringBootConfiguration 三.@EnableAutoConfiguration 3.1.@AutoConfigurationPackage 3.2.@Import(AutoConfigurationImportSelector.class) 3.2.1.getCandidat

  • SpringBoot自动配置特点与原理详细分析

    目录 一.SpringBoot是什么 二.SpringBoot的特点(核心功能) 三.SpringBoot的自动配置原理 1. @SpringBootApplication 2. @SpringBootConfiguration 3. @EnableAutoConfiguration 4. @ComponentScan 四.核心原理图 五.常用的Conditional注解 一.SpringBoot是什么 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Sprin

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

    目录 依赖管理 自动版本仲裁 starter启动器 自动配置 说明:基于atguigu学习笔记.部分内容涉及上一章节,请参考以下链接. 上一章:Spring boot 介绍和简易入门 依赖管理 自动版本仲裁 在上一节创建Spring Boot项目时,看到,引入了一个父项目.如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-paren

  • SpringBoot特点之依赖管理和自动装配(实例代码)

    1.1依赖管理 父项目做依赖管理 自动版本仲裁:在父项目里规定了依赖的版本,只需要引入以来即可,不需要写版本号 依赖管理 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> </parent>

  • SpringBoot的依赖管理配置

    目录 1.spring-boot-starter-parent依赖 2.spring-boot-starter-web依赖 问题1:为什么导入dependency时不需要指定版本? 在Spring Boot入门程序中,项目pom.xml文件有两个核心依赖,分别是spring-boot-starterparent和spring-boot-starter-web,关于这两个依赖的相关介绍具体如下: 1.spring-boot-starter-parent依赖 在chapter01项目中的pom.xm

  • SpringBoot浅析安全管理之Spring Security配置

    目录 Spring Security 的基本配置 基本用法 1. 创建项目添加依赖 2. 添加 hello 接口 3. 启动项目测试 配置用户名和密码 基于内存的认证 HttpSecurity 登录表单详细配置 注销登录配置 多个 HttpSecurity 密码加密 1. 为什么要加密 2. 加密方案 3. 实践 方法安全 在 Java 开发领域常见的安全框架有 Shiro 和 Spring Security.Shiro 是一个轻量级的安全管理框架,提供了认证.授权.会话管理.密码管理.缓存管理

  • SpringBoot起步依赖和自动配置基本介绍

    目录 1.起步依赖 2.自动配置 1.起步依赖 概念起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起支持某一功能. 简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能例子-搭建Web应用Spring+SpringMVC 我们需要添加许多依赖,还要考虑到不同依赖之间存在版本冲突的问题,一般搭建一个Web项目时需要导入以下依赖: <dependency> <groupId>

  • 全面解析SpringBoot自动配置的实现原理

    之前一直在用SpringBoot框架,一直感觉SpringBoot框架自动配置的功能很强大,但是并没有明白它是怎么实现自动配置的,现在有空研究了一下,大概明白了SpringBoot框架是怎么实现自动配置的功能,我们编写一个最简单的自动配置功能,大概的总结一下. 一,配置属性类 其实就是值对象注入的方式去配置一些Spring常用的配置,我们编写一个最简单的配置对象. @ConfigurationProperties(prefix = "hello") //@Component //如果这

  • SpringBoot自动配置原理,你真的懂吗?(简单易懂)

    概述 上面博文(SpringBoot简介与快速搭建)我们简单的介绍了什么是SpringBoot,以及如何使用SpringBoot,但是我们对于SpringBoot的基本原理并没有介绍,这篇博文我们重点介绍SpringBoot是如何实现的自动配置. 依赖管理 在我们的pom文件中最核心的依赖就一个: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-star

  • 基于SpringBoot核心原理(自动配置、事件驱动、Condition)

    前言 SpringBoot是Spring的包装,通过自动配置使得SpringBoot可以做到开箱即用,上手成本非常低,但是学习其实现原理的成本大大增加,需要先了解熟悉Spring原理.如果还不清楚Spring原理的,可以先查看博主之前的文章,本篇主要分析SpringBoot的启动.自动配置.Condition.事件驱动原理. 正文 启动原理 SpringBoot启动非常简单,因其内置了Tomcat,所以只需要通过下面几种方式启动即可: @SpringBootApplication(scanBas

  • 通过Spring Boot整合Mybatis分析自动配置详解

    前言 SpringBoot凭借"约定大于配置"的理念,已经成为最流行的web开发框架,所以有必须对其进行深入的了解:本文通过整合Mybatis类来分析SpringBoot提供的自动配置(AutoConfigure)功能,在此之前首先看一个整合Mybatis的实例. SpringBoot整合Mybatis 提供SpringBoot整合Mybatis的实例,通过Mybatis实现简单的增删改查功能: 1.表数据 CREATE TABLE `role` ( `note` varchar(25

随机推荐