【Spring IoCDI】IoC容器,IoC注解,Bean的使用

【Spring核心思想:IoC】

spring是一个开源框架,支持广泛的应用场景,简而言之:Spring是包含了众多工具方法的IoC容器

【IoC】

IoC的意思是「控制反转」,也就是说Spring是一个“控制反转”的容器

通用程序的实现代码,类的创建顺序是反的,如果想改tire需要连同之前的一起改,很麻烦

改进后控制权发生了反转,不再是使用方对象创建并依赖对象,而是把依赖对象注入当前对象中,依赖对象的控制权不再由当前类控制,这样即便再怎么改都不会影响当前类

也就是说,IoC控制反转,就是将对象的控制权交给Spring的IoC容器,由IoC容器创建及管理对象,也就是「Bean」的存储

【DI】

依赖注入,把依赖注入到当前对象中

【IoC&DI的使用】

「@Component」

该注解会把关联的类放入到IoC容器中(IoC用法)

「@Autowired」

该注解会把关联的类从IoC容器中取出(DI用法)

有了IoC容器,就不用那么麻烦地自己存储对象了

【Bean的存储】

Spring框架提供了丰富的注解用于把对象交给IoC容器来管理,分两类

类注解:@Controller,@Service,@Repository,@Component,@Configuration

方法注解:@Bean

【@Controller】

加上这样的注解后,Spring也会帮我们管理这个对象

@Service,@Component,@Configuration这四个注解也是如此,这些注解的功能都是相同的

【为什么有这么多注解?】

这与「应用分层」相呼应,让程序员看到类注解后,就能直接了解当前类的用途

应用分层:

Controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据

Service:业务逻辑层,处理具体的业务逻辑

Dao:数据访问层,也称为持久层,负责数据的访问操作,包括增删改查

————————

@Controller:i控制层的注解

@Service:业务逻辑层的注解

@Repository:数据访问层的注解

@Configuration:配置层(处理项目中的一些配置信息的注解

@Component:也可以写在配置层的注解,一般与@Configuration混用,划分的不严格

这些注解是@Component的衍生注解

【@Bean】

加在方法上的注解

需要使用「@AllArgsConstructor」「@NoArgsConstructor」注解

意味着不带参数的构造方法和带参数的构造方法

加上后就会自动为方法生成这两种构造方法

这样做(在UserInfoComponent中创建对象)的好处是,把所有创建的对象都放到了一个方法中,把这个方法交给spring管理

但如果放了多个对象,在main函数中的语句就是不正确的,因为spring不知道要拿哪个对象,这会报错,所以我们要根据名称去拿

通过这个代码,我们可以拿出“userInfo1”的对象,lisi

因此,如果一个类有多个对象,我们就必须要根据对象名称来获取

【重命名Bean】

在注解中添加name参数可以对方法进行重命名

这样一来,在该代码中,就无法通过方法原本的名称“userinfo”去获取了,只能根据Bean注解指定的name来获取

我们可以同时指定多个name参数(因为其底层机理是一个数组,可以同时指定多个参数)

这样一来,在该代码中,就可以通过方法原本的名称“userinfo”去获取了

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

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

相关文章

docker 可用镜像服务地址(2024.10.31亲测可用)

1.错误 Error response from daemon: Get “https://registry-1.docker.io/v2/” 原因:镜像服务器地址不可用。 2.可用地址 编辑daemon.json: vi /etc/docker/daemon.json内容修改如下: {"registry-mirrors": ["https://…

200smart怎么通过4G网络与wincc通讯

smart的PLC距离监控室距离比较,要在监控中心使用wincc组态来远程控制,物联网技术已经非常成熟,通过4G无线网络部署速度最快,成本最低,且稳定性可靠性已经完全满足工控技术需求。那200smart是怎样通过4G网络与wincc通讯…

Git学习记录

文章目录 一、版本控制工具1.1、集中式版本控制工具1.2、分布式版本控制工具 二、Git安装与常用命令2.1、Git环境配置2.2、基础操作指令2.2、分支2.2.1、基本指令2.2.2、合并冲突 三、Git远程仓库3.1、添加和查看远程仓库3.2、推送到远程仓库3.3、从远程仓库克隆3.4、从远程仓库…

如何打开/关闭 GitLab 的版本检查功能?

本文分享如何打开/关闭 GitLab 的版本检查功能。 极狐GitLab 是 GitLab 的中国发行版【https://dl.gitlab.cn/ncecn6kb】,中文版本对中国用户更友好,文章以私有化部署的极狐GitLab 实例来演示版本检查功能的开启和关闭。强烈不建议关闭该功能&#xff0…

Docker入门系列——网络

Docker 通过容器化应用程序,彻底改变了我们构建、分发和运行应用程序的方式。然而,有效使用 Docker 的一个关键方面是理解容器如何相互通信以及与外界通信。 1. 什么是 Docker 网络? Docker 网络允许容器相互通信以及与外部资源通信。默认情况…

20241029软考架构-------软考案例9答案

每日打卡题案例9答案 【2014年真题】 难度:简单 请详细阅读有关软件架构评估方面的说明,回答下列问题。(25分) 【说明】 某电子商务公司拟升级目前正在使用的在线交易系统,以提高客户网上购物时在线支付环节的效率和安…

双分解+一区极光优化+Transformer!CEEMDAN-Kmeans-VMD-PLO-Transformer多元时序预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CEEMDAN-Kmeans-VMD-PLO-Transformer融合K均值聚类的数据双重分解极光优化Transformer多元时间序列预测(完整源码和数据) 2.CEEMDAN分解,计算样本熵,根据样…

2024 CSS保姆级教程二 - BFC详解

前言 - CSS中的文档流 在介绍BFC之前,需要先给大家介绍一下文档流。​ 我们常说的文档流其实分为定位流、浮动流、普通流三种。​ ​ 1. 绝对定位(Absolute positioning)​ 如果元素的属性 position 为 absolute 或 fixed,它就是一个绝对定位元素。​ 在…

el-table 滚动条重置 手动控制滚动条

最近在使用 el-table 的时候,出现一个问题: 表头过长的时候,会有左右滑动的操作,当我们把表格拉到最右侧,这个时候重新请求数据的话,表格位置还是在最右侧,不会恢复原位。 那我们想恢复原位&a…

【Android】View的事件分发机制

文章目录 分发顺序ActivityViewGroupView 协作方法整体流程注意 Activity事件分发ViewGroup事件分发View点击事件总结 分发顺序 Activity->ViewGroup->View Activity 分发事件:Activity 通过 dispatchTouchEvent 方法分发事件,首先尝试将事件传递…

基于vue框架的的考研网上辅导系统ao9z7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:学生,公告信息,课程分类,考研资料,考研视频,课程信息,院校建议,教师 开题报告内容 基于Vue框架的考研网上辅导系统开题报告 一、研究背景与意义 随着高等教育的普及和就业竞争的加剧,考研已成为众多大学生提升学历、增强就…

分析 std::optional 的使用与常见错误

文章目录 引言常见错误及解决方案1. 错误使用 std::optional 变量进行算术运算2. 错误检查 std::optional 是否有值3. 忽视 std::optional 的默认值 结论 引言 std::optional 是 C17 引入的一个模板类,用于表示可能有也可能没有值的情况。它特别适用于函数返回值&a…

本地搭建php包依赖管理工具,使用satis搭建私有composer仓库

一、总体设计 dns服务器nginxsatis web 静态页面satis manage 管理程序 二、nginx配置 1、nginx.conf # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://ngi…

软件测试学习笔记丨SeleniumPO模式

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22525 本文为霍格沃兹测试开发学社的学习经历分享,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 说明:本篇博客基于sel…

Ubuntu-22.04 虚拟机安装

1. Ubuntu安装方式 1.1. 基于物理介质安装 光盘安装:通过将 Ubuntu 镜像刻录到光盘,在计算机 BIOS/UEFI 中设置光盘为第一启动项,然后按照安装程序的提示进行语言选择、分区、用户信息设置等操作来完成安装。这种方式需要有光盘刻录设备和空…

软件设计师-上午题-12、13 软件工程(11分)

软件工程题号一般为17-19和29-36题,分值一般为11分。 目录 1 软件过程 1.1 CMM(能力成熟度模型) 1.1.1 真题 1.2 CMMI(能力成熟度模型集成) 1.2.1 真题 2 软件过程模型 2.1 瀑布模型 2.2 V模型 2.2.1 真题 2.3 增量模型 2.3.1 真题 2.4 演化模型 2.5 …

Bartender 5 for Mac 菜单栏管理软件 安装教程【保姆级教程,操作简单小白轻松上手使用】

Mac分享吧 文章目录 Bartender 5 for Mac 菜单栏管理软件 安装完成,软件打开效果一、Bartender 5 菜单栏管理软件 Mac电脑版——v5.2.3⚠️注意事项:1️⃣:下载软件2️⃣:安装软件3️⃣:打开软件,根据自己…

C#/.NET/.NET Core优秀项目和框架2024年10月简报

前言 每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看…

OWASP TOP10 OSS 风险:开源软件安全指南

OWASP OSS 列表提供了旨在绕过 CVE 目录等滞后指标的建议,并为安全从业者提供了安全使用 OSS 组件的指南。 在最近的一些暴露的漏洞和风险之后,对开源软件 (OSS)的安全和使用方式进行批判性审视的呼声越来越高,特别是 …

数据转换 | Matlab基于SP符号递归图(Symbolic recurrence plots)一维数据转二维图像方法

目录 基本介绍程序设计参考资料获取方式 基本介绍 Matlab基于SP符号递归图(Symbolic recurrence plots)一维数据转二维图像方法 符号递归图(Symbolic recurrence plots)是一种一维时间序列转图像的技术,可用于平稳和非平稳数据集;对噪声具有…