当前位置: 首页 > news >正文

SpringIOCDI

1.IOC

1.1.IOC概述
  • IOC: Inversion Of Control,简称IOC,也被称为控制反转。对象的创建权由程序员主动创建转移到容器,由容器创建、管理对象,这种思想称为控制反转。这个容器称为IOC容器或Spring容器
  • 被IOC容器创建、管理的对象称为Bean对象
  • IOC在上面图中对应的就是创建对象放入到容器中
1.2.IOC注解
  • 想要在程序启动时将对象交由IOC帮我们创建并放入到容器中,那么我们需要告诉IOC哪些类需要交给它创建并管理,此时就需要在类上打上对应的注解

注解

说明

位置

@Controller

@Component衍生注解,表示使用在控制器类上

标注在控制器类上

@Service

@Component衍生注解,表示使用在业务类上

标注在业务类上

@Repository

@Component衍生注解,表示使用在数据访问类上

标注在数据访问类上,使用MyBatis框架后不再使用

@Component

声明bean的基础注解

不属于以上三类时,使用此注解

2.DI

2.1.DI概述
  • DI:Dependency Injection,简称DI,也被称为依赖注入。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入
  • DI在上面图中对应的就是从容器中找到对象并注入给声明的IStudentService对象
2.2.DI注解
  • 想要在IOC将对象创建完成后将Bean对象注入到我们声明的对象中时,需要使用到Spring提供的@Autowired注入注解打到声明对象上就可以实现从容器中自动获取对应实例进行注入

注解

说明

位置

@Autowired

依赖注入注解

标注在需要依赖注入的对象上

3.注解常用参数

value属性

在IOC容器中,每一个Bean都有一个属于自己的名字,可以通过注解的value属性指定bean的名字

CompentScan自定义扫描

@Scope注解

作用域

说明

singleton

单例作用域,Bean对象默认作用域

prototype

多例作用域,每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean实例

request

请求作用域,只适用于SpringMVC框架,了解

session

会话作用域,只适用于SpringMVC框架,了解

application

全局作用域,只适用于SpringMVC框架,了解

  • proxyMode属性:表示IOC容器要不要为Bean创建代理,如何创建代理,是使用JDK的动态代理还是使用CGLIB
    • DEFAULT:不为Bean创建代理对象,默认值
    • NO:不为Bean创建代理对象
    • INTERFACES:使用JDK动态代理为Bean创建代理对象
    • TARGET_CLASS:使用CGLIB为Bean创建代理对象

@Lazy注解
  • @Lazy注解可以作用在类上,或者方法上,表示Bean对象开启懒加载
  • 注意:使用@Lazy的前提是要操作的Bean要使用默认的单例模式,多例Bean无法开启懒加载,因为多例Bean本身就是使用时才创建
  • value属性:指定是否开启懒加载
    • true:开启懒加载,默认值
    • false:关闭懒加载

4.依赖注入

属性注入

setter注入

构造器注入

5.多同类型Bean注入

@Primary
  • @Primary:当存在多个相同类型的Bean注入时,在要使用的类上加上@Primary注解,来确定默认的实现
  • 在StudentAServiceImpl类上加上@Primary

@Qualifier
  • @Qualifier注解:指定当前要注入的bean对象。 在@Qualifier的value属性中,指定注入的bean的名称
  • @Qualifier注解不能单独使用,必须配合@Autowired使用

@Resource
  • @Resource注解:是按照bean的名称进行注入。通过name属性指定要注入的bean的名称

相关文章:

SpringIOCDI

1.IOC 1.1.IOC概述 IOC: Inversion Of Control,简称IOC,也被称为控制反转。对象的创建权由程序员主动创建转移到容器,由容器创建、管理对象,这种思想称为控制反转。这个容器称为IOC容器或Spring容器被IOC容器创建、管…...

单细胞Seruat和h5ad数据格式互换(R与python)方法学习和整理

SeruatV4数据转化为h5ad格式数据 1、导入(R) rm(list ls()) library(Seurat) library(qs) library(reticulate) library(hdf5r) library(sceasy) library(BiocParallel) register(MulticoreParam(workers 4, progressbar TRUE)) scRNA <- qread("sc_dataset.qs&q…...

分布式难题-三座大山NPC

文章目录 1. 三座大山 NPC 的概念2. NPC 细分理解2.1. Network Delay 网络延迟2.2. Process Pause 进程暂停2.3. Clock Drift 时钟漂移Is the Algorithm Asynchronous? 本文参考&#xff1a; RedLock红锁安全性争论&#xff08;上&#xff09; https://martin.kleppmann.com/…...

两个方法教你设置Excel密码,防止修改和复制Excel表格内容

EXCEL是一款功能强大的电子表格软件&#xff0c;广泛用于各个地方。然而&#xff0c;对于一些重要的表格文件需要通过设置密码来限制大就的修改和复制权限。因而&#xff0c;对于一个EXCEL表格&#xff0c;通过密码设置大家有访问表格的权限&#xff0c;但无法修改数据的权限。…...

Java解析Excel文件

目录 背景 技术选型 开源Java框架选型 1. Apache POI 2. EasyExcel 收费Java框架选型 1. Spire.XLS for java 2. Aspose 总结 背景 在低代码产品的研发过程中&#xff0c;为用户提供数据导入导出的能力时&#xff0c;无法避免的就是对EXCEL解析的能力&#xff0c;所以本篇通过介…...

Require:基于雪花算法完成一个局部随机,全局离散没有热点切唯一的数值Id生成器。

【雪花算法】雪花算法&#xff08;Snowflake Algorithm&#xff09;是Twitter开源的用于生成唯一ID的算法&#xff0c;它可以在分布式系统中生成唯一的64位长整数ID。这种ID生成方式既保证了趋势递增&#xff0c;又保证了在不同数据中心、不同机器上生成的ID的唯一性。 符号位&…...

libevent - Macro function

TAILQ_INIT /** Tail queue functions.* 尾队列的头结点初始化为空队列。*/ #define TAILQ_INIT(head) do { \(head)->tqh_first NULL; \(head)->tqh_last &(head)->tqh_first; \ } while (/*CONSTCOND*/0)TAILQ_INIT 宏是一个用于初始化尾队列头部…...

408算法题leetcode--第17天

101. 对称二叉树 101. 对称二叉树思路&#xff1a;递归&#xff0c;对称即两个子树的左边和右边分别一样&#xff1b;一个子树是左中右遍历&#xff0c;另一个是右中左遍历&#xff1b;写的时候可以分三步&#xff0c;确定函数参数以及返回类型&#xff0c;确定终止条件&#…...

机器人顶刊IEEE T-RO发布无人机动态环境高效表征成果:基于粒子的动态环境连续占有地图

摘要&#xff1a;本研究有效提高了动态环境中障碍物建模的精度和效率。NOKOV度量动作捕捉系统助力评估动态占用地图在速度估计方面的性能。 近日&#xff0c;上海交通大学、荷兰代尔夫特理工研究团队在机器人顶刊IEEE T-RO上发表题为Continuous Occupancy Mapping in Dynamic …...

spring-boot web + vue

依赖的软件 maven 1. 官网下载zip 文件&#xff0c;比如apache-maven-3.9.9-bin.zip 2. 解压到某个盘符&#xff0c;必须保证父亲目录的名字包含英文&#xff0c;数字&#xff0c;破折号&#xff08;-&#xff09; 3. 设置环境变量M2_HOME, 并将%M2_HOME%\bin添加到windown…...

HDFS分布式文件系统01-HDFS架构与SHELL操作

HDFS分布式文件系统 学习目标第一课时知识点1-文件系统的分类单机文件系统网络文件系统分布式文件系统 知识点2-HDFS架构知识点3-HDFS的特点知识点4-HDFS的文件读写流程知识点5-HDFS的健壮性 第二课时知识点1-HDFS的Shell介绍HDFS Shell的语法格式如下。HDFS Shell客户端命令中…...

Go语言流程控制

Go语言流程控制 1.IF-ELSE2.Switch-Caseswitch 语句Type Switch 3.select 语句4.循环语句 1.IF-ELSE Go 编程语言中 if 语句的语法如下&#xff1a; if 布尔表达式 {/* 在布尔表达式为 true 时执行 */ }例如&#xff1a; package mainimport "fmt"func main() {va…...

无人机在救灾方面的应用!

一、灾害监测与评估 实时监测与评估&#xff1a;无人机可以快速到达灾害现场&#xff0c;通过搭载的高清摄像头、红外热成像仪等设备&#xff0c;对灾区进行实时监测和灾情评估。根据捕捉到的受灾范围、火势大小、建筑物损坏情况等关键信息&#xff0c;为救援行动提供决策依据…...

面试知识点总结篇一

一、C语言和C有什么区别 C语言是面向过程&#xff0c;强调用函数将问题分解为多个子任务&#xff0c;按顺序逐步进行。数据和操作分开C则是面向对象&#xff0c;面向对象是一种基于对象和类的编程范式&#xff0c;关注如何利用对象来抽象和模拟现实世界的实体。因此引入了类&a…...

【计算机网络 - 基础问题】每日 3 题(二十五)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…...

【第十八章:Sentosa_DSML社区版-机器学习之协同过滤】

【第十八章&#xff1a;Sentosa_DSML社区版-机器学习之协同过滤】 1.算子介绍 协同过滤是推荐系统中常用的一种方法。该算法旨在填补用户-产品关联矩阵中缺少的项。在算法中&#xff0c;用户和产品都是通过一组少量的潜在因素描述&#xff0c;这些潜在因素可以用于预测用户-产…...

TDOA方法求二维坐标的MATLAB代码演示与讲解

引言 时间差定位(Time Difference of Arrival, TDOA)是一种用于确定信号源位置的技术,广泛应用于无线通信、声学定位等领域。通过测量信号到达多个接收器的时间差,可以计算出信号源的二维坐标。本文将通过MATLAB代码演示如何使用TDOA方法来求解二维坐标。 TDOA原理 TDOA…...

基于微信的原创音乐小程序的设计与实现+ssm论文源码调试讲解

第二章 开发工具及关键技术介绍 2.1 JAVA技术 Java主要采用CORBA技术和安全模型&#xff0c;可以在互联网应用的数据保护。它还提供了对EJB&#xff08;Enterrise JavaBeans&#xff09;的全面支持&#xff0c;java servlet AI&#xff0c;JS&#xff08;java server ages&…...

基于大数据技术的颈椎病预防交流与数据分析及可视化系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…...

Spring MVC中实现一个文件上传和下载功能

说到文件上传和下载&#xff0c;相信每个开发者都有或多或少的接触过文件上传的功能吧&#xff0c;文件上传和下载是我们在学习计算机网络应用常见的一个功能&#xff0c;主要涉及到用户和服务器之间的数据传输。 我们来对文件上传和下载功能的进行相关概述吧&#xff01; 文…...

从HDLbits的Verification题目看起:新手写Verilog代码最容易踩的3个坑(附避坑指南)

从HDLbits的Verification题目看起&#xff1a;新手写Verilog代码最容易踩的3个坑&#xff08;附避坑指南&#xff09; 当你第一次在仿真器里看到波形图像脱缰野马一样乱窜时&#xff0c;那种头皮发麻的感觉我至今记忆犹新。Verilog看似简单的语法背后&#xff0c;藏着无数让初学…...

MediaPipe人体骨骼检测:零配置Web应用,上传图片秒出骨架图

MediaPipe人体骨骼检测&#xff1a;零配置Web应用&#xff0c;上传图片秒出骨架图 1. 引言&#xff1a;一键式骨骼检测的便捷体验 想象一下这样的场景&#xff1a;健身教练需要快速分析学员的动作姿势&#xff0c;医生希望直观展示患者的骨骼姿态&#xff0c;或者动画师需要参…...

使用ComfyUI搭建可视化DeOldify工作流

使用ComfyUI搭建可视化DeOldify工作流 想给家里的老照片上色&#xff0c;但觉得写代码太麻烦&#xff1f;或者想把手头的黑白视频变成彩色&#xff0c;却不知道从何下手&#xff1f;今天&#xff0c;我们就来聊聊一个特别有意思的玩法&#xff1a;用ComfyUI这个可视化工具&…...

用ESP32和VS1053模块DIY网络收音机:从硬件接线到Arduino代码调试全流程

用ESP32和VS1053打造智能网络收音机&#xff1a;从元器件选型到音频流调试实战 在物联网和智能硬件蓬勃发展的今天&#xff0c;ESP32凭借其出色的无线连接能力和丰富的外设接口&#xff0c;成为DIY音频项目的理想选择。本文将手把手带你完成一个功能完整的网络收音机项目&#…...

ROS2 核心概念与实战应用指南

1. ROS2核心概念解析&#xff1a;从零开始理解机器人开发框架 第一次接触ROS2时&#xff0c;我被它复杂的术语体系搞得晕头转向。直到把机器人项目比作一个餐厅&#xff0c;才突然开窍——节点就像厨师和服务员&#xff0c;话题是传菜窗口&#xff0c;服务是点单对讲机&#xf…...

大模型学习6-模型量化与推理部署

LLM中的量化技术 本部分将系统介绍如何通过模型量化&#xff08;Quantization&#xff09;技术压缩LLM。首先&#xff0c;从量化背景出发&#xff0c;说明当前模型压缩的现实需求&#xff1b;其次&#xff0c;概述深度学习中的通用量化原理&#xff1b;最后&#xff0c;结合LL…...

【技术解构】LPRNet_Pytorch:如何用轻量级模型实现工业级车牌识别

【技术解构】LPRNet_Pytorch&#xff1a;如何用轻量级模型实现工业级车牌识别 【免费下载链接】LPRNet_Pytorch Pytorch Implementation For LPRNet, A High Performance And Lightweight License Plate Recognition Framework. 项目地址: https://gitcode.com/gh_mirrors/l…...

Screencast-Keys问题速解:从环境配置到界面优化的7个实战方案

Screencast-Keys问题速解&#xff1a;从环境配置到界面优化的7个实战方案 【免费下载链接】Screencast-Keys Blender Add-on: Screencast Keys 项目地址: https://gitcode.com/gh_mirrors/sc/Screencast-Keys Screencast-Keys是一款Blender插件&#xff0c;能够实时显示…...

百万行实时清洗延迟<8ms?Polars 2.0 Arrow2集成深度剖析:内存布局、缓存对齐、CPU预取指令级优化(LLVM IR反编译佐证)

第一章&#xff1a;百万行实时清洗延迟<8ms&#xff1f;Polars 2.0 Arrow2集成深度剖析总览Polars 2.0 的核心突破在于深度整合 Arrow2&#xff08;Rust 实现的 Apache Arrow 内存格式库&#xff09;&#xff0c;彻底重构了底层内存布局与计算执行引擎。这一集成不仅消除了跨…...

Tiled2Unity:解决Tiled地图与Unity引擎无缝集成的自动化转换方案

Tiled2Unity&#xff1a;解决Tiled地图与Unity引擎无缝集成的自动化转换方案 【免费下载链接】Tiled2Unity Export Tiled Map Editor (TMX) files into Unity 项目地址: https://gitcode.com/gh_mirrors/ti/Tiled2Unity Tiled2Unity是一款开源工具&#xff0c;核心功能是…...