首页 > 其他分享 >Ioc DI bean实例化

Ioc DI bean实例化

时间:2023-05-16 17:15:56浏览次数:36  
标签:容器 构造方法 DI 对象 创建 bean Ioc

Ioc(控制反转)

使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想为控制反转。

Spring实现了Ioc思想,Spring提供了一个容器,成为Ioc容器,用来充当Ioc思想中的外部。

Ioc容器可以管理大量对象的创建和初始化,管理的这些对象叫做Bean。

 

 DI依赖注入

在容器中建立bean与bean之间的依赖关系的整个过程成为依赖注入。

为了实现代码的解耦,Spring实现了这些功能:

使用Ioc容器管理Bean,(Ioc)

在Ioc容器内将有依赖关系的bean进行关系绑定。(DI)

 

Ioc容器创建的bean默认是单例对象,原因:很对对象创建之后就是调用其不同的方法,可以只创建一个对象 而且可以提高效率。

适合交给Ioc容器进行管理的对象:表现层对象,业务层对象,数据层对象,工具对象。就是可以重复使用的对象。

不适合交给Ioc容器进行管理的对象:封装实体的域对象。创建的对象每次都有不同的值,不适合重复使用。

 

bean实例化

bean本质是对象,创建bean使用构造方法完成,spring使用无参的构造方法实例化对象。

spring默认是使用构造方法创建对象的,什么代码都不写,spring就会使用构造方法创建对象。

 

 

 

标签:容器,构造方法,DI,对象,创建,bean,Ioc
From: https://www.cnblogs.com/zhang12345/p/17406176.html

相关文章

  • redis学习2通用命令--黑马
    key通用操作基本操作delkeyexistskeytypekey扩展操作为指定key设置有效期expirekeysecondspexpirekeymillisecondsexpireatkeytimestamppexpireatkeymilliseconds-timestamp获取key的有效时间(剩余时间)ttlkey(返回-2代表key已消失,返回-1表示存在key,返回其......
  • ASEMI代理ADI亚德诺ADM706SARZ-REEL原厂芯片
    编辑-ZADM706SARZ-REEL参数描述:型号:ADM706SARZ-REELVCC工作电压范围:1.0-5.5V电源电流:100μA重置阈值滞后:20mV复位脉冲宽度:200msPFI输入阈值:1.25VPFI输入电流:+0.01nAVCC:-0.3Vto+6V所有其他输入:-0.3VtoVCC+0.3V数字输出电流:20mA工作温度范围:-40℃to+85℃储存......
  • Hudi的ro和rt表
    建表后并不会产生ro和rt两个表:spark-sql>createtablehudi_mor_tbl(>idint,>namestring,>pricedouble,>tsbigint>)usinghudi>tblproperties(>type=&#......
  • Spring源码:Bean生命周期(五)
    前言在上一篇文章中,我们深入探讨了Spring框架中Bean的实例化过程,该过程包括从Bean定义中加载当前类、寻找所有实现了InstantiationAwareBeanPostProcessor接口的类并调用实例化前的方法、进行实例化、调用applyMergedBeanDefinitionPostProcessors方法等多个步骤,最终生......
  • 使用 UI5 Tools 这款 Visual Studio Code 扩展来管理和运行本地 SAP UI5 应用试读版
    本教程目前的每一篇文章,介绍的都是用命令行ui5serve本地启动一个Web服务器,来本地运行笔者Github里提供的SAPUI5应用。在浏览器地址栏里输入localhost:8080即可访问启动的Web服务器上的资源,从而访问SAPUI5应用:如果各位学习者不喜欢命令行的方式,而是习惯在GUI......
  • 知行之桥EDI系统2023版功能介绍——概览页面
    登录知行之桥EDI系统2023版,即可看到概览页面。默认情况下,会显示过去7天的各项指标。用户可以在页面右上角:显示过去的数据 下拉列表中手动选择需要的时间段,如:24小时、3天、7天等。关键指标的自定义配置概览页面具有灵活的可选性,用户可以对关键指标部分进行自定义的搭配。可以从......
  • Visual Studio2019打开电脑摄像头
    #include<iostream>//opencv头文件#include<opencv2/opencv.hpp>usingnamespacestd;usingnamespacecv;intmain(){ VideoCapturecapture(0); while(1) { Matframe; capture>>frame; imshow("摄像头",frame); waitKey(30)......
  • DIY伺服驱动器方案,某成熟量产型号,基于TMS320F28 DIY伺服驱动器方案,某成熟量产型号,基于
    DIY伺服驱动器方案,某成熟量产型号,基于TMS320F28DIY伺服驱动器方案,某成熟量产型号,基于TMS320F28069设计开发。原理图和PCB源格式(AD打开)-控制板/驱动板/电源板/滤波板基于TMS320F28069的控制源代码产品资料,代码注释少,需要有一定基础,建议小白不要拿ID:27260669815636452......
  • Codeforces Round 873 (Div. 2)
    CodeforcesRound873(Div.2)A-DivisibleArray思路:每个数为i时都为i的倍数,前n个数和为Sn=n*(n+1)/2,可知每个数再乘n,Sn必为n的倍数#include<bits/stdc++.h>usingnamespacestd;typedefpair<int,int>PII;typedefpair<string,int>PSI;constintN=3e5+5,INF=0x3f3f3f3......
  • BeanUtils beanjavaBean与Map互转
    importjava.lang.reflect.InvocationTargetException;importjava.util.Map;importorg.apache.commons.beanutils.BeanUtils;publicclasstest{publicstaticvoidmain(String[]args){Personperson1=newPerson();person1.......