当前位置: 首页 > 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; 文…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...