依赖注入方式和自动加载原理

依赖注入

Spring提供了依赖注入的功能,方便我们管理和使用各种Bean,常见的方式有:

  • 字段注入(@Autowired@Resource
  • 构造函数注入
  • set方法注入

在以往代码中,我们经常利用Spring提供的@Autowired注解来实现依赖注入:

在这里插入图片描述
但是有可能出现空指针异常。
那么给属性加上final修饰,但是@Autowired注解又不能加载final修饰的属性上,直接报红了。
在这里插入图片描述
Spring推荐的是基于构造函数注入,像这样:
在这里插入图片描述
这样做的话,OrderServiceImpl对象构造的时候,就会使用有参构造函数,如果这5个对象有为null就会直接报错,会防止项目中使用这些属性的时候出现空指针。

但是,如果需要注入的属性较多,构造函数就会非常臃肿,代码写起来也比较麻烦。

好在Lombok提供了一个注解@RequiredArgsConstructor,可以帮我们生成构造函数,简化代码:

注意: Lombok 要求 需要注入的对象必须使用 final 修饰

这样一来,不管需要注入的字段再多,我们也只需要一个注解搞定:
在这里插入图片描述

4.1.4 自动加载原理

spring-boot 项目启动时会自动加载所有jar 中的 META-INF/spring.factories文件,也会自动加载别的模块的META-INF/spring.factories文件完成自动配置

在这里插入图片描述

springboot会自动加载META-INF/spring.factories文件里的这些类
在这里插入图片描述

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

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

相关文章

elk:使用filebeat采集日志发送到kafka

# 安装 filebeat 下载 cd /chz/install/filebeat wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.13.4-linux-x86_64.tar.gz解压 tar zxvf filebeat-8.13.4-linux-x86_64.tar.gz修改配置文件 cd /chz/install/filebeat/filebeat-8.13.4-linux-x86…

AIGC笔记--Stable Diffusion源码剖析之FrozenCLIPEmbedder

1--前言 以论文《High-Resolution Image Synthesis with Latent Diffusion Models》 开源的项目为例,剖析Stable Diffusion经典组成部分,巩固学习加深印象。 2--FrozenCLIPEmbedder 在默认提供的 txt2img.py 中,使用固定权重的 CLIP 模型来将…

LeetCode|1302. Deepest Leaves Sum

. 题目 Given the root of a binary tree, return the sum of values of its deepest leaves. Example 1: Input: root [1,2,3,4,5,null,6,7,null,null,null,null,8]Output: 15 Example 2: Input: root [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]Output: 19 Constr…

在Linux上的Java项目导出PDF乱码问题

在Linux上的Java项目导出PDF乱码问题 场景:一个Java项目导出PDF,在我本地导出是没有问题,但是部署上Linux上后,导出就出现了乱码了。 处理方案 我这里使用的处理方案是在Linux服务器上安装一些PDF需要使用的字体 1.把字体上传到…

JavaScript第十一讲:DOM编程“事件”练习题

前言 上一节有本部分的内容讲解,有需要的码客们可以看看 练习题描述: 编写一个HTML表单,用户可以在其中输入一个账号。当用户点击“检查账号”按钮时,使用JavaScript来验证该账号是否存在于一个预定义的账号列表中。如果存在&am…

ubuntu 22.04 整机灾备方案

在Ubuntu 22.04上进行每日整机灾备的详细步骤包括配置自动化备份脚本、设置定时任务、并将备份数据存储到远程位置。以下是完整的步骤: 1. 安装必要的软件 1.1 更新操作系统 确保操作系统和所有软件包是最新的: sudo apt update sudo apt upgrade -y…

Apache POI(使用Java读写Excel表格数据)

1.Apache POI简介 Apache POI是一个开源的Java库,用于操作Microsoft Office格式的文件。它支持各种Office文档的读写功能,包括Word文档、Excel电子表格、PowerPoint演示文稿、Outlook电子邮件等。Apache POI提供了一组API,使得Java开发者能够…

course-nlp——8-translation-transformer

本文参考自https://github.com/fastai/course-nlp。 注意力机制和 Transformer Nvidia AI 研究员 Chip Huyen 写了一篇很棒的文章《Top 8 trends from ICLR 2019》,其中的趋势之一是 RNN 正在失去研究人员的青睐。 这是有原因的,RNN 可能很麻烦&#…

【Qt】Qt QTreeWidget隐藏列名称(横向表头)

1. 效果 未隐藏 隐藏 2. 方法 方法1 ui->treeWidget->header()->hide();方法2 ui->treeWidget->header()->setVisible(false);

Go语言升级1.22.0版本VSCode启动调试报 Version of Go is too old for this version of Delve

因为项目中调用了其它同事的服务,该服务同事的Go环境是1.22.0,我本地go环境是Go1.20.6,不得已也升级了go的版本到1.22.0,其实升级很简单,只需要去go官网下载windows环境的zip包,把原来配置的环境变量GOROOT…

计算机科学(学习笔记三)

内容来源:计算机科学 指令和程序 指令:指示计算机要做什么的代码,多条指令共同组成程序。 计算机指令长度 由于早期计算机每个字只有8位,指令只占4位,意味着只能有16个指令,这远远不够。 现代计算机有两…

[个人总结]-java常用方法

1.获取项目根路径 user.dir是一个系统属性,表示用户当前的工作目录,大多数情况下,用户的当前工作目录就是java项目的根目录(src文件的同级路径) System.getProperty("user.dir") 结果:D:\code…

C++实现,简单的命令行交互框架

目录 背景 背景 在实际开发中,经常需要有对端测试程序,配合自己的程序,验证功能、逻辑等。面对繁杂、多变的需求,如果对端程序设计得不够灵活,则无法提升工作效率,如果能够与对端程序交互,通过…

嵌入式系统错误处理与日志记录

在嵌入式系统中,错误处理和日志记录是确保系统稳定性和可维护性的关键组成部分。有效的错误处理策略可以减少系统故障,而详尽的日志记录可以帮助开发者快速定位问题原因。本文将探讨嵌入式系统中的错误处理机制和日志记录策略,并提供相应的代…

Spring Cloud 微服务集成Sentinel实现服务熔断降级

文章目录 一、前言二、技术思路及方案2.1 实现思路2.2 实现方案2.2.1 nacos动态数据源实现类关系图 三、功能实现3.1 快速集成方案3.1.1 引入依赖3.1.2 服务端熔断降级3.1.3 feign调用降级 四、扩展4.1 SPI机制4.2 自定义Slot实现4.3 基于 Sentinel 实现 Feign 全局异常兜底4.3…

ubuntu, esp-idf, arduino

1, 把 esp-idf 文件夹拷贝到 ubuntu, 不是拷贝 zip。 这样做是为了在 ubuntu 里能检测到 git 2, 把 esp-idf 里的 hello-world 拷贝出来 3, 在 hello-world 里建立文件夹 components, 把 arduino 文件夹拷贝进去 esp-idf 和 ar…

Html5如何播放hls格式的视频

目录 一、什么情况下需要播放 二、hls的原理 1、 切片 2、编码 3、分发 4、M3U8文件 5、客户端请求 6、动态码率调整 7、缓存 8、实时性 三、方法一:使用hls.js播放 四、方法二:使用video.js播放 一、什么情况下需要播放 当前端需要嵌入设备视…

[数组] 子数组最大平均数

给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。 任何误差小于 10-5 的答案都将被视为正确答案。 示例 1: 输入:nums [1,12,-5,-6,50,3], k 4 输出&#xff…

操作系统教材第6版——个人笔记5

3.2 单连续分区存储管理 3.2.1 单连续分区存储管理 单连续分区存储管理 每个进程占用一个物理上完全连续的存储空间(区域) 单用户连续分区存储管理固定分区存储管理可变分区存储管理 单用户连续分区存储管理 主存区域划分为系统区与用户区设置一个栅栏寄存器界分两个区域…

每日题库:Huawe数通HCIA——13

所有资料均来源自网络,但个人亲测有效,特来分享,希望各位能拿到好成绩! PS:别忘了一件三连哈! 今日题库: 186. 下列协议中属于动态IGP路由协议的是?-单选 A.stA.tiC. B.OSPF c…