首页 > 其他分享 >你能说出SpringBoot自动装配的原理吗

你能说出SpringBoot自动装配的原理吗

时间:2023-03-19 21:33:17浏览次数:34  
标签:装配 说出 SpringBoot 配置文件 开发人员 Spring 配置 注解

Spring Boot目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

在过去,我们要让一个Spring项目启动,往往需要配置很多的xml配置文件,但是在使用SpringBoot之后,我们甚至无需写一行xml,就可以直接将整个项目启动,这种“零配置”的做法减轻了开发人员很多的工作量,可以让开发人员专注在业务逻辑的设计上。

SpringBoot之所以可以做到简化配置文件直接启动,无外乎是其内部的两种设计策略:开箱即用和约定大于配置。

  • 开箱即用:在开发过程中,通过maven项目的pom文件中添加相关依赖包,然后通过相应的注解来代替繁琐的XML配置以管理对象的生命周期。
  • 约定大于配置:由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。

SpringBoot会将所有的功能场景都封装成一个一个的启动器,供开发人员使用。

开箱即用

SpringBoot项目启动的核心:@SpringBootApplication注解

@SpringBootApplication是一个组合注解,包括@SpringBootConfiguration和@EnableAutoConfiguration。

@SpringBootConfiguration

@SpringBootConfiguration其实就携带了一个@Configuration注解,它代表自己是一个Spring的配置类。所以我们可以认为:@SpringBootConfiguration = @Configuration

@EnableAutoConfiguration

其内部就包含了这么两个注解:

@AutoConfigurationPackage //自动配置包
@Import(AutoConfigurationImportSelector.class)//自动配置导入选择

@Import(AutoConfigurationImportSelector.class)

它帮我们导入了AutoConfigurationImportSelector,这个类中存在一个方法可以帮我们获取所有的配置。

当我们的SpringBoot项目启动的时候,会先导入AutoConfigurationImportSelector,这个类会帮我们选择所有候选的配置,我们需要导入的配置都是SpringBoot帮我们写好的一个一个的配置类,那么这些配置类的位置,存在与META-INF/spring.factories文件中,通过这个文件,Spring可以找到这些配置类的位置,于是去加载其中的配置。

约定大于配置

我们的配置文件(.yml)应该放在哪个目录下,配置文件的命名规范,项目启动时扫描的Bean,组件的默认配置是什么样的(比如SpringMVC的视图解析器)等等等等这一系列的东西,都可以被称为约定。

maven目录结构的约定

spring的配置文件目录可以放在:

  • file:./config/
  • file:./
  • classpath:/config/
  • classpath:/

这四个路径从上到下存在优先级关系。

SpringBoot默认配置文件的约定

SpringBoot默认可以加载以下三种配置文件:

  • application.yml
  • application.yaml
  • application.properties

建议使用前两种作为项目的配置文件。

项目启动时扫描包范围的约定

SpringBoot的注解扫描的默认规则是SpringBoot的入口类所在包及其子包。

 

标签:装配,说出,SpringBoot,配置文件,开发人员,Spring,配置,注解
From: https://www.cnblogs.com/xfeiyun/p/17234334.html

相关文章

  • SpringBoot+Vue+EasyExcel实现excel简单导入导出
    1.先导入EasyExcel依赖<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.......
  • day07-SpringBoot接收参数相关注解
    SpringBoot接收参数相关注解1.基本介绍SpringBoot接收客户端提交数据/参数会使用到相关注解详解@PathVariable、@RequestHeader、@ModelAttribute、@RequestParam、@Co......
  • OpenEuler安装配置PostgreSQL
    一、准备条件OpenEuler(Hyper-V虚拟机):版本:20.03LTSSP2下载地址:https://www.openeuler.org/zh/download/PostgreSQL:版本:13.4源码版下载地址:https://www.pos......
  • SpringBoot集成Swagger错误总结
    错误展示rorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith'debug'enabled.2023-03-1915:37:55.307ERROR12980---......
  • SVN 安装配置
    title:SVN安装配置date:2023-03-1915:04:00categories:安装教程tags:svnSVN安装配置SVN的安装分为2部分,第一部分是服务端安装,第二部分的客户端安装。一般......
  • 第五天(SpringBoot基础第二篇)
    一、关于starterstater参赛人、发令员SpringBoot中的starter只是把我们某一模块,比如web开发时所需要的所有JAR包打包好给我们而已。不过它的厉害之处在于,能自动把......
  • 第四天(springBoot基础第一篇)
    springBoot基础1.什么是springBoot(概念及其特点)1.概念(1)介绍官网地址: https://spring.io/SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应......
  • SpringBoot 统一页面异常处理
    相关博客:<arel="nofollow"href="https://hcshow.blog.csdn.net/article/details/103081763">SpringBoot统一异常处理</a>第一步:创建项目添加Maven依赖:<dependency>......
  • springBoot项目中常用工具类
    springBoot项目中常用工具类目录springBoot项目中常用工具类一、RedisUtils二、JwtUtil三、Result一、RedisUtils导入依赖<dependency><groupId>org.springf......
  • 玩转SpringBoot原理:掌握核心技术,成为高级开发者
    本文通过编写一个自定义starter来学习springboot的底层原理,帮助我们更好的使用springboot集成第三方插件步骤一:创建项目步骤二:添加依赖步骤三:创建自动配置类步骤四:创......