首页 > 其他分享 >【Spring boot】自动装配原理

【Spring boot】自动装配原理

时间:2024-08-12 22:17:35浏览次数:3  
标签:装配 Spring 配置 boot 应用程序 自动 Boot

什么是自动装配
自动装配(Auto-Configuration)是Spring Boot框架的核心特点,通过扫描应用程序的classpath和依赖关系,自动配置和装配Spring应用程序所需的各种组件

在传统的Spring应用程序中,开发者需要手动配置大量的bean,例如数据源、事务管理器、视图解析器等。这些配置过程繁琐而容易出错,加大了开发难度和成本。而Spring Boot的自动装配机制则能够自动完成这些配置过程,使开发者可以更加专注于业务逻辑的实现,高效的构建应用。

Spring Boot自动装配的好处
1、简化配置:Spring Boot的自动装配能够根据应用程序的需求和条件,内置自动配置所需的组件,避免了繁琐的手动配置过程。当然有些没有自动装配的依赖需要手动配置坐标。
2、减少出错:由于自动装配是基于条件化配置的,因此可以避免手动配置过程中出现的错误和疏漏。
3、提高效率:自动装配能够提高开发效率,减少开发时间和成本。开发者不用纠结版本的选择,高效的版本控制。
4、提升可维护性:自动装配使得应用程序的配置更为规范和标准化,提高了可维护性和可扩展性。

Spring Boot的自动装配方式
1、自动配置类:在Spring Boot的jar包中,包含了许多以META-INF/spring.factories文件指定的自动配置类。这些类上通常会有@Configuration注解,表明它们是用来定义Bean的配置类。

2、条件化配置:这些自动配置类使用了诸如@ConditionalOnClass、@ConditionalOnBean、@ConditionalOnMissingBean等@ConditionalOnXXX、条件注解,来决定是否创建和启用配置某个Bean。这些条件注解根据类路径中是否存在某个类、是否已经定义了某个Bean等条件来决定配置是否生效。

3、自定义配置:如果应用程序需要对自动配置进行修改或扩展,可以提供自己的配置类。这样可以通过编写自定义的bean来替换或扩展自动配置中的默认行为。
4、依赖注入:当自动配置类中的条件满足时,SpringBoot会自动创建和配置相应的Bean,并通过依赖注入的方式将它们注入到其他需要它们的Bean中。

Spring Boot 自动装配原理:
1、在Spring Boot启动过程中,解析@SpringBootApplication,得到@ComponentScan和@EnableAutoConfiguration两个核心注解。

2、其中@ComponentScan作用是用来加载当前引导类所在包下的所有bean。
3、 @EnableAutoConfiguration这个注解开启了自动装配的功能improt导入了一个AutoConfigurationImportSelector。
4、 AutoConfigurationImportSelector负责去加载当前项目所有依赖下的MEATA-INF文件夹下的spring.factories文件,对每一个spring.factories文件进行逐行扫描,反射加载对应的配置以及bean.【Spring的SPI机制】

总结:
Spring Boot的自动装配通过条件注解、自动配置类和Starter依赖等机制,根据条件判断和优先级规则来自动配置和装配应用程序所需的组件。这种方式简化了配置过程,同时也保留了灵活性,允许开发者进行自定义配置。

标签:装配,Spring,配置,boot,应用程序,自动,Boot
From: https://www.cnblogs.com/hellowudijava/p/18337758

相关文章

  • Spring MVC原理:掌握Web开发的核心技术
    引言在现代Web开发领域,Spring框架无疑占据着举足轻重的地位。其中,SpringMVC作为Spring框架中的一个重要组成部分,为构建响应用户请求、处理业务逻辑以及渲染视图的Web应用程序提供了强大的支持。本文将深入探讨SpringMVC的工作原理及其在实际项目中的应用,无论你是刚刚接触......
  • [Spring]Bean生命周期
    生命周期的概要流程Bean的生命周期概括起来就是4个阶段:实例化(Instantiation)属性赋值(Populate)初始化(Initialization)销毁(Destruction)实例化:第1步,实例化一个bean对象;属性赋值:第2步,为bean设置相关属性和依赖;初始化:第3~7步,步骤较多,其中第5、6步为初始化操作......
  • 报错:2024-08-12T18:39:35.313+08:00 ERROR 29668 --- [demo2] [ main] o.s.
    org.springframework.beans.factory.BeanDefinitionStoreException:Failedtoparseconfigurationclass[com.example.demo.DemoApplication]atorg.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:179)~[spring-con......
  • 微服务安全加固:Spring Cloud的细粒度权限控制策略
    标题:微服务安全加固:SpringCloud的细粒度权限控制策略在微服务架构中,服务的细粒度权限控制是保障系统安全的关键。SpringCloud作为一个微服务架构的解决方案集合,提供了多种工具和策略来实现这一目标。本文将详细介绍如何利用SpringCloud中的各种组件,如SpringCloudSecur......
  • Centos7.9安装配置Zabbix6.0详细步骤
    文章目录一:配置yum源二:关闭防火墙和selinux三:安装php四:安装apache五:安装mysql六:编译安装zabbix6.0七:php修改参数八:页面访问一:配置yum源1:备份现有的yum源(更改名称就行)2:创建阿里云yum源wget-O/etc/yum.repos.d/aliyun.repohttp://mirrors.aliyun.com/repo/Centos......
  • springboot学生作业管理系统---附源码14916
    摘  要  在信息化社会中,人们需要针对性的信息获取途径。然而,由于不同角度和偏好的存在,人们经常只能获得特定类型的信息,这也是技术攻克难题之一。为了解决学生作业管理系统等问题,本研究通过分析和研究,设计开发了学生作业管理系统。学生作业管理系统主要功能模块包括系......
  • 使用orcale数据库的springboot项目打war包部署到tomcat后启动报错解决办法(缺少UCP数据
    我将在我本丢运行ok的springboot项目打成war包后部署到tomcat后,启动tomcat的时候一直显示:由于之前的错误,Context[/ruoyi]启动失败......,查看tomcat的日志文件发现报错:12-Aug-202410:20:35.183严重[main]org.apache.catalina.core.StandardContext.listenerStart配置应用......
  • SpringSecurity+前端项目+redis完成认证授权的代码
    1.前端准备工作--都在全局main.js页面中设置的1.1.创建Vue工程后,并导入elementui和axios,添加连接后端项目的路径,把axios挂载到Vue1.2.前置路由守卫(所有路由跳转前核实一下身份)//前置路由守卫--所有的路由跳转都先经过这里//to:即将要访问的路径from:从哪里来......
  • 基于SpringBoot+MySQL+SSM+Vue.js的物业管理系统(附论文)
    获取见最下方名片信息获取见最下方名片信息获取见最下方名片信息演示视频基于SpringBoot+MySQL+SSM+Vue.js的物业管理系统(附论文)技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+Sprin......
  • Springboot计算机毕业设计公益捐赠管理系统r9m00
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表捐赠者,领取者,物品分类,物品捐赠,旧物展示,物品退还,物品领取,退还管理,回收管理,回收站,物品需求,在线捐赠,需求展示,在线聊天开题报告内容一、研究背景随着......