Bean——IOC(Github上有代码)

news2024/11/22 13:29:55

源码

https://github.com/cmdch2017/Bean_IOC.git

获取Bean对象

在这里插入图片描述
BeanFactory
在这里插入图片描述

Bean的作用域

在这里插入图片描述

第三方Bean需要用@Bean注解

在这里插入图片描述
比如消息队列项目中,需要用到Json的消息转换器,这是第三方的Bean对象,所以不能用@Component,而要用@Bean
在这里插入图片描述

SpringBoot原理

起步依赖

依赖传递,a依赖b,b依赖c
在这里插入图片描述

自动配置

Springboot的自动配置就是当Spring容器启动后,一些配置类、bean对象就自动存入到了IOC容器中,不用手动配置了
在这里插入图片描述
Springboot采用的是@EnableXXXX注解,分装了@Import注解,导入对应的类

在这里插入图片描述
在这里插入图片描述
自动配置原理是Spring Boot的核心功能之一,它可以根据项目中的配置文件、类路径、环境变量等条件,自动地配置应用程序。通过自动配置,开发人员可以专注于编写业务逻辑,而无需花费时间在繁琐的配置工作中。

总结

Spring Boot的自动配置基于以下原理:

组合注解:@SpringBootConfiguration是一个组合注解,由@ComponentScan、@EnableAutoConfiguration和@SpringBootConfiguration组成。@SpringBootConfiguration与普通@Configuration相比,唯一区别是前者要求整个app中只出现一次@ComponentScan。excludeFilters用于在组件扫描时进行排除,也会排除自动配置类。
自动配置类:@EnableAutoConfiguration是一个组合注解,由@AutoConfigurationPackage、@Import(AutoConfigurationImportSelector.class)等注解组成。@AutoConfigurationPackage用来记住扫描的起始包。@Import(AutoConfigurationImportSelector.class)用来加载META-INF/spring.factories中的自动配置类。
条件判断:Spring底层使用@Conditional注解进行条件判断。根据不同的条件判断,如果满足指定的条件,整个配置类里面的配置就会生效。例如,@ConditionalOnWebApp判断当前应用是否是web应用,如果是,当前配置类生效。
属性绑定:Spring Boot会自动将配置文件中的属性值绑定到相应的Bean属性上。例如,在application.properties文件中配置数据库连接信息,Spring Boot会自动将该属性值绑定到相应的DataSource Bean上。
自动装配:通过Java的反射机制和注解,Spring Boot会自动将配置类中的Bean注入到相应的组件中。例如,在配置类中声明一个DataSource Bean,Spring Boot会自动将其注入到需要使用DataSource的组件中。
总之,Spring Boot的自动配置原理主要基于组合注解、自动配置类、条件判断、属性绑定和自动装配等技术实现。通过这些技术,Spring Boot可以自动化地根据项目中的配置文件、环境变量等条件来配置应用程序,提高了开发效率和可维护性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1190511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言---插入排序、希尔排序、冒泡排序、选择排序、快速排序简单介绍

文章目录 插入排序希尔排序冒泡排序选择排序快速排序 本文主要介绍用C语言实现的一些排序方法,有插入排序、希尔排序、冒泡排序、选择排序和快速排序,文章中给出的例子都是按照升序排列的。 插入排序 若数组只有一个元素,自然不用排序&#…

[C]环境(0/0)→ 环境配置

这里写目录标题 0x00 额环境下载解压 0x00 额 写了那么多C的入门,就是没写C语言的环境配置,乘此机会写了吧。 环境下载 直接在我这下载就好了,毕竟用了挺久没啥问题的 C语言环境(gcc version 8.1.0) 解压 最后得到…

【JAVA学习笔记】66 - 本章作业(IO流)

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter19/src/com/yinhai/homework 1.使用File类和FileWriter类 (1)在判断e盘下是否有文件夹mytemp,如果没有就创建mytemp public class Homework01 {public static void main(String…

大数据技术从业者注意了!使用代理IP时避开这些误区

作为一名专业的大数据从业者,我经常需要使用HTTP代理IP进行数据爬取工作。在这个过程中,我积累了一些关于使用代理IP的经验,同时也发现了一些新手常见的误区,这些误区可能会影响你的工作的效率和数据准确性。我将分享一些关于使用…

使用超融合,网络交换机如何选型与配置?

很多用户在部署超融合集群时,都会关注网络交换机的选型与配置。我们在这篇文章中整理了一些关于网络交换机的常见提问,并邀请 SmartX 技术专家进行了详细解答。 Q1. 超融合架构下,网络交换机是如何部署的?需要多少台交换机&#x…

黑芝麻智能与香港科技园签订合作备忘录,迈向全球化发展新阶段

11月6日,黑芝麻智能与香港科技园公司举行合作签约仪式,双方将合力推动黑芝麻智能香港科技创新研发中心在科技园落地,并促进园区打造车规级高性能智能汽车计算芯片平台。黑芝麻智能首席市场营销官杨宇欣、香港科技园公司首席企业发展总监姚庆良…

学妹刚毕业那天,我连夜用Python采集了上万份岗位数据,只为给她找一份好工作

记得学妹刚毕业那天,为了不让学妹毕业就失业,连夜我就用Python采集了上万份岗位,分析出最合适她的工作。 为此,学妹连夜来我家表示感谢😍 我们开始今天的正题吧 首先要准备这些 软件 Python 3.8Pycharm 模块使用 …

棱镜七彩加入UOS主动安全防护计划(UAPP),共建信创生态

近日,在统信UOS主动安全防护计划(UAPP)技术沙龙上,2023年度第二期UAPP合作伙伴授牌发布仪式正式举行。棱镜七彩作为国内专注开源安全与软件供应链安全的创新型厂商,正式获得官方授牌,成为 UAPP 成员单位。 …

2021年09月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 对于数列3,8,11,15,17,19,25,30,44,采用“二分查找”法查找8,需要查找多少次? A:5 B:4 C:3 D:2 答案:D 按二分查找法的规律,每次先查找中间值,进行比较。 第2题…

在vue中如果头像为空时用姓名第一个字当头像

业务场景:当个人资料或者用户头像没有图片时&#xff0c;默认使用户名字中第一个汉字做头像。 效果图&#xff1a; 完整代码&#xff1a; <el-avatarsize"large" style"width: 45px; height: 45px; line-height: 45px; font-size: 24px"v-if"…

无需开发,精臣云可轻松连接用户运营、广告推广等行业应用

精臣智慧标识科技有限公司简介 武汉精臣智慧标识科技有限公司&#xff0c;是国内便携式标签打印机创新品牌和实物管理解决方案服务商。在物品标签还处在繁琐的PC打印时代&#xff0c;精臣公司便创造性地从智能便携角度出发&#xff0c;顺应移动互联时代趋势&#xff0c;推出了…

HarmonyOS开发:回调实现网络的拦截

前言 上一篇文章&#xff0c;分享了一个基于http封装的一个网络库&#xff0c;里面有一个知识点&#xff0c;在初始化的时候&#xff0c;可以设置请求头拦截和请求错误后的信息的拦截&#xff0c;具体案例如下&#xff1a; Net.getInstance().init({netErrorInterceptor: new M…

1995-2020年全国各省二氧化碳排放量面板数据

1995-2020年全国各省二氧化碳排放面板数据 1、时间&#xff1a;1995-2020 2、范围&#xff1a;全国、30省 3、来源&#xff1a;中国能源统计NJ 4、指标&#xff1a; 统计年度、地区代码、地区名称、煤炭二氧化碳排放量、焦炭二氧化碳排放量、原油二氧化碳排放量、汽油二氧…

苹果Apple ID忘了或者咨询其他问题如何让苹果客服打电话给你

环境&#xff1a; iPhone11 Apple ID 问题描述&#xff1a; 苹果Apple ID忘了或者咨询其他问题如何让苹果客服打电话给你 上次公司苹果设备&#xff0c;忘了激活锁的账户密码要向苹果申请解锁&#xff0c;打了很长电话&#xff0c;平时语音超套餐了&#xff0c;想着让他们…

python 删除特定字符所在行

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 查询文件中含有特殊字符串的行 #!/usr/bin/python # -*- coding:utf-8 -*- import re file1 open(test.txt,r) istxt re.compile(r.*if.*,re.I) for line in file1.readlines():line line.strip()ifstr re.findall(istxt…

【好书推荐】计算机考研精炼1000题——考研408不可或缺

《计算机考研精炼1000题》简介 本书根据最新《全国硕士研究生招生考试计算机学科专业基础考试大纲》编写。参考过去十多年的真题&#xff0c;本书精心编排了单项选择题和综合应用题&#xff0c;共约1000道&#xff08;分为上下两册&#xff0c;共24章。上册&#xff08;1&#…

安卓三防手持终端 二维码扫描识别器 pda条码手持机

PDA条码手持机是一种快速的数据采集设备&#xff0c;具备多种数据采集功能并且可以进行二次开发&#xff0c;可以针对性的进行定制服务&#xff0c;满足各种业务需求。因其体积小&#xff0c;易操作、功能全、效率高深受物联网行业的青睐。 条码扫描是PDA重要的功能之一&#…

Java Web 学习笔记(四) —— MyBatis

目录 1 MyBatis 概述2 MyBatis 快速入门3 Mapper 代理开发4 配置文件实现CRUD4.1 环境准备4.2 查询所有数据4.2.1 编写接口方法4.2.2 编写 SQL 语句4.2.3 编写测试方法4.2.4 结果映射问题 4.3 查询详情4.3.1 编写接口方法4.3.2 编写SQL语句4.3.3 编写测试方法 4.4 多条件查询4.…

11月11日|欢迎参加Sui Meetup泰国活动!

现在是Sui基金会与泰国Sui社区见面的时候啦&#xff0c;我们诚邀每个人参加今年最大的Sui Meetup泰国活动&#xff0c;主题是“Summer Paradise&#xff08;夏日天堂&#xff09;”。在活动中&#xff0c;您将会见到来自Sui基金会、ContributionDAO、KX、Inspex、Cryptomind、A…

解决问题:-1: error: LNK1104: 无法打开文件“D3dx9.lib”

解决问题:-1: error: LNK1104: 无法打开文件“D3dx9.lib” 先安装Microsoft DirectX SDK (June 2010)&#xff0c;安装包名字叫DXSDK_Jun10.exe&#xff0c; Microsoft DirectX SDK 2010 版本下载 http://www.microsoft.com/en-us/download/details.aspx?id6812 Version: Date…