阅读 189

SpringBoot依赖管理和自动配置(springboot自动配置原理详解)

依赖管理

我们打开SpringBoot项目的pom.xml文件,可以看到和之前的maven项目几乎相同,但是同以往不一样的是,这里的依赖都是一个个starter并没有显示具体引用了哪些jar包,而且这里依赖了一个<parent>

<parent>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-parent</artifactId>     <version>2.3.2.RELEASE</version>     <relativePath/> <!-- lookup parent from repository --> </parent> 复制代码

父项目依赖

点击进入父依赖中(idea ctrl + 左击), 还是没有具体依赖,再往上查看父依赖,最顶层我们看到了这里定义了大量的具体依赖,并且通过<properties>定义了所有的依赖版本号。

这里涉及到maven的知识,在此不做详细介绍,感兴趣可以看看这里

版本控制

SpringBoot项目通过父依赖统一管理项目中所有的jar包版本,项目在引入依赖的时候就不需要具体指定版本了。而且当我们引入一个starter的时候,会自动引入相关的jar包,无需我们自己去一个个引入,考虑版本兼容问题,给我们整合第三方依赖带来了便捷。

总结

  • 引入的starter<parent>中集中声明了项目中几乎所有依赖包以及版本号。具体使用时只需要直接引入依赖,不需要指定版本号,自动版本仲裁

  • 如需要引入父依赖中未指定版本的依赖,需要指定版本,并且如果在当前项目中指定版本,就近原则,会覆盖父依赖中的版本,以当前指定版本号为准

  • spring-boot-starter-xxx命名为官方提供的starter,而第三方机构提供的starter一般命名为xxx-spring-boot-starter

自动配置

根据引入的starterSpringBoot项目启动后会自动加载配置,引入web开发的starter,会自动配置好web开发中的所有常见场景,比如tomcat容器,以及字符编码,视图解析器。并且配置了默认的包扫描,自动扫描主程序所在包,这也是为什么我们不需要再向原来那样指定包扫描。当然我们也可以指定扫描指定的包 @SpringBootApplication(scanBasePackages= "com.yang" )或者@ComponentScan指定扫描路径

以往MVC下自己手动配置的东西,在SpringBoot中,要么默认给我们配置好了,要么我们可以通过注解简单的完成相同的效果。非常的方便。

总结

  • 自动配置了需要的场景容器

  • 自动配置了包扫描结构(启动类所在包)

  • 自动加载配置文件,生成配置对象

  • 按需加载所有的配置项

具体场景可查看

<dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-autoconfigure</artifactId>   <version>2.3.2.RELEASE</version>   <scope>compile</scope> </dependency> 复制代码

image.png


作者:申阳
链接:https://juejin.cn/post/7029582317895024653

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐