首页 > 其他分享 >【Spring IoC&DI】IoC容器,IoC注解,Bean的使用

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

时间:2024-11-06 09:48:14浏览次数:3  
标签:容器 DI 对象 Spring Bean 注解 IoC

【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”去获取了

标签:容器,DI,对象,Spring,Bean,注解,IoC
From: https://blog.csdn.net/2301_81305165/article/details/143447599

相关文章

  • SpringBoot源码解析(二):启动流程之引导上下文DefaultBootstrapContext
     SpringBoot的启动流程可以分为几个重要的步骤,其中之一是引导上下文(BootstrapContext)。引导上下文是在SpringBoot应用程序启动时创建的第一个Spring应用程序上下文,它负责加载和初始化SpringBoot的核心组件和配置。默认的引导上下文是通过DefaultBootstrapContext类来实现......
  • chaodiwang.py
    桓公少与殷侯齐名,常有竞心。桓问殷:“卿何如我?”殷云:“我与我周旋久,宁作我!”抄底王今天闲聊,聊到股票跌停要去抄底,风浪越大鱼越贵。剑走偏锋,是不是可以设计一个抄底选股策略,对这支股票的历史上大跌表现进行量化代码importdatetimeimportbaostockasbsimportpandasasp......
  • 第20章 SpringBoot上传文件
    在SpringBoot中实现文件上传仍然使用SpringMVC的MultipartFile类来处理。我们创建一个“SpringBootUploadDemo”的工程然后我们修改编码格式以及Maven仓库地址,我们省略这个过程了。接下来,我们修改“pom.xml”文件,添加SpringBoot和Web依赖,如下所示<?xmlversion="1.0......
  • 第21章 SpringBoot日志
    我们首先介绍一下开源日志框架。首先是commons-logging,是apache最早提供的日志框架。它的主要作用提供一个统一的日志接口,以便可以在不同的项目中使用不同的日志框架。common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志实现库(例如,jdk自带的logging库)。......
  • 数据库Redis篇
    系列文章目录第一章C/C++语言篇第二章计算机网络篇第三章操作系统篇第四章数据库MySQL篇第五章数据库Redis篇第六章场景题/算法题第七篇常见HR问题篇本系列专栏:点击进入后端开发面经关注走一波秋招阶段,面过很多大中小厂,积攒了很多面经,都是高频问题!!!前言:本系......
  • Lazarus实现TEdit组件的文本垂直居中
    在Lazarus中,要实现TEdit组件的文本垂直居中,可以通过自定义TEdit组件并重写其CreateParams方法来设置编辑框的样式为多行,然后通过SetCenter方法来调整文本的垂直位置。在需要的unit添加EditCenter单元。unitEditCenter;{$modeObjFPC}{$H+}interfaceusesClasses,SysUti......
  • 如何快速搭建一个spring boot项目
    一、准备工作1.1 安装JDK:确保计算机上已安装JavaDevelopmentKit(JDK)8或更高版本、并配置了环境变量1.2 安装Maven:下载并安装Maven构建工具,这是SpringBoot官方推荐的构建工具。1.3安装代码编辑器:这里推荐使用IntelliJIDEA二、使用SpringInitializr创建项目2.1 ......
  • 闯关leetcode——3289. The Two Sneaky Numbers of Digitville
    大纲题目地址内容解题代码地址题目地址https://leetcode.com/problems/the-two-sneaky-numbers-of-digitville/description/内容InthetownofDigitville,therewasalistofnumberscallednumscontainingintegersfrom0ton-1.Eachnumberwassu......
  • springboot关爱老人App-计算机毕业设计源码32708
    目 录摘要1绪论1.1开发背景和意义1.2开发技术1.2.1Android开发工具1.2.2Springboot框架1.2.3MySQL数据库1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1用户注册流程2.2.2用户登录流程2.2.3数据删除流程2.3系......
  • springboot高校医务室管理系统-计算机设计毕业源码58407
    目 录摘 要1绪论1.1研究背景与意义1.2国内外研究现状1.3论文结构与章节安排1.4相关技术、工具简介2 高校医务室管理系统项目概述2.1可行性分析2.1.1技术可行性2.1.2 经济可行性2.1.3操作可行性2.2 系统功能分析2.2.1功能性分析2.2.2......