Spring中IOC的实现

Spring Ioc实现机制——简析 需要明确一点,任何项目没有了Spring,也依旧能做,那么为什么Spring还会这么火?答案就是Spring的两个特性IoC与AOP,这里需要指出的是,并不是Spring提出的AOP的概念,只能说是Spring很好的实现了AOP的特性。那么,这次就先讨论下Spring IoC的实现机制。  IoC是什么东东? IoC实现的机制是什么样子的? 模拟一个Spring IoC的实现 阅读详情
 
了解了IOC模式的思想以及其优点,再来学习其实现。上篇blog中大致描述了PicoContainer以及Spring各自对IOC的实现,这篇来详细看一下Spring中它的实现。

Spring中IOC贯穿了其整个框架,但正如martinflower所说:“saying that these lightweight containers are special because they use inversion of control is like saying my car is special because it has wheels”,IOC已经称为框架设计中必不可少的部分。就实现上来讲Spring采取了配置文件的形式来实现依赖的注射,并且支持Type2 IOC(Setter Injection)以及Type3 IOC(Constructor Injection)。

Spring中IOC的实现的核心是其Core Bean Factory,它将框架内部的组件以一定的耦合度组装起来,并对使用它的应用提供一种面向服务的编程模式(SOP:Service-Orient Programming),比如Spring中的AOP、以及持久化(Hibernate、ibatics)的实现。
首先从最底层最基础的factory Bean开始,先来看org.springframework.beans.factory.Bean

Factory接口,它是一个非常简单的接口,getBean方法是其中最重要的方法,Spring通常是使用xml来populate Bean,所以比较常用的是XMLFactoryBean。

用一个简单的示例看一下其用法。首先写下两个Bean类:

ExampleBean 类:

public class ExampleBean {

private String psnName=null;

private RefBean refbean=null;

private String addinfo=null;



public String getAddinfo() {

return getRefbean().getAddress()+getRefbean().getZipcode();

}

public String getPsnName() {

return psnName;

}

public void setPsnName(String psnName) {

this.psnName = psnName;

}

public void setRefbean(RefBean refbean) {

this.refbean = refbean;

}

public RefBean getRefbean() {

return refbean;

}

public void setAddinfo(String addinfo) {

this.addinfo = addinfo;

}

}



RefBean类:

public class RefBean {

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public String getZipcode() {

return zipcode;

}

public void setZipcode(String zipcode) {

this.zipcode = zipcode;

}

private String zipcode=null;

private String address=null;

}

其xml配置文件 Bean.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<bean id="exampleBean" class="test.ExampleBean">

<property name="psnName"><value>xkf</value></property>

<property name="refbean">

<ref bean="refBean"/>

</property>

</bean>

<bean id="refBean" class="test.RefBean">

<property name="address"><value>BeiJing</value></property>

<property name="zipcode"><value>100085</value></property>

</bean>

</beans>



然后可以写个测试类来测试,当然,需要Spring中的Spring-core.jar以及commons-logging.jar,当然在elipse中可以通过安装spring-ide插件来轻松实现。

public class Test {

public static void main(String[] args){

try{

Resource input = new ClassPathResource("test/Bean.xml");

System.out.println("resource is:"+input);

BeanFactory factory = new XmlBeanFactory(input);

ExampleBean eb =

(ExampleBean)factory.getBean("exampleBean");

System.out.println(eb.getPsnName());

System.out.println(eb.getAddinfo());

}

catch(Exception e){

e.printStackTrace();

}

}

这样,通过BeanFactory的getBean方法,以及xml配置文件,避免了在test类中直接实例化ExampleBean,消除了应用程序 (Test)与服务(ExampleBean)之间的耦合,实现了IOC(控制反转)或者说实现了依赖的注射(Dependency Injection)。

<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript> </script>
springIoc实现原理 spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合 立即下载

相关推荐

手把手教你用OpenClaw+飞书打造论文写作AI助手(附踩坑实录)

面对几十篇文献,逐一阅读摘要都费时。我:“请提取桌面‘论文参考文献’文件夹中所有PDF的摘要,整理成表格,包含:论文标题、作者、发表年份、核心方法、主要结论。AI助手:“正在处理...已提取18篇论文摘要,汇总表格已保存到桌面‘文献摘要汇总.xlsx’。这比我自己一个个打开PDF复制粘贴快了不止100倍。OpenClaw+飞书的组合,让AI真正成为了我的“数字员工”。虽然配置过程有些曲折,但看到它在飞书里回应指令、帮我处理繁琐工作时,那种成就感无可替代。如果你也在准备论文,不妨试试这套方案。记住,

AcademicIdeas的博客 1041

Spring IoC实现及原理

快速了解spring实现与底层原理

Guo_Liwei的博客 4278

基于FFmpeg与Nginx的大华摄像头实时视频Web接入方案

本文详细介绍了一种基于FFmpeg与Nginx的大华摄像头实时视频Web接入方案。该方案通过FFmpeg将摄像头RTSP协议流转换为浏览器友好的HLS格式,并利用Nginx进行高效分发,最终结合Video.js构建前端播放页面,实现无需插件的跨平台实时监控。方案具有免费、轻量、稳定、易于部署的特点,适合中小企业、个人开发者快速搭建内部监控或展示系统。

weixin_28040125的博客 345

【Spring6】| Spring对IoC的实现(核心重点)

【Spring6】| Spring对IoC的实现(核心重点)

m0_61933976的博客 3143

新年美食鉴赏——基于注意力机制CBAM的美食101分类

新年美食鉴赏——基于注意力机制CBAM的美食101分类一、数据预处理1.数据集介绍2.读取标签3.统一命名4.整理图片路径5.划分训练集与验证集6.定义美食数据集二、注意力机制1.简介2.卷积块注意力网络——CBAM通道注意力模块CAM空间注意力模块SAM3.将通道、空间注意力模块合并三、基于卷积块注意力模块的ResNet-CBAM1.代码实现2.模型测试3.查看网络结构4.模型训练5.模型预测四、总结与升华个人简介 春节是一年当中最隆重、最盛大的节日,吃得最好的一餐可能就是年夜饭了,想想就很激动呢!随着新

zbp_12138的博客 1万+

【CUDA Runtime】第一个“Hello World“程序

CUDA(Compute Unified Device Architecture)是 NVIDIA 提供的一个并行计算平台和编程模型,旨在通过利用 GPU 的强大计算能力来加速计算密集型应用。对于许多开发者而言,开始学习 CUDA 编程的第一步通常是编写一个简单的“Hello World”程序。尽管 CUDA 的实际应用远远超出一个简单的例子,但这个初步的示例能帮助开发者快速入门,理解基本的 CUDA 编程流程。

m0_62599305的博客 1504

四、Spring对IoC的实现

四、Spring对IoC的实现

既来之的博客 378

GPS天线结构、原理、测试

【有源陶瓷天线构成】GPS天线是由接收天线和前置放大器两个部件组成。GPS接收天线的作用,是将卫星来的无线电信号的电磁波能量变换成接收机电子器件可摄取应用的电流。绝大部分内置GPS天线为右旋极化陶瓷介质,其组成部分为:陶瓷天线、低噪音信号模块、线缆、[接头](h

数字世界 万物互联 2万+

Spring中的IOC

本文章介绍关于Spring中实现IOC的三种方式

a1806542392的博客 1291

8、 使用TPM密钥:从理论到实践的全面指南

本文全面介绍了如何使用TPM(可信平台模块)进行密钥管理,涵盖密钥的创建、存储、加载、迁移以及特殊密钥类型的使用。通过详细的操作步骤和代码示例,帮助读者掌握TPM密钥管理技术,确保系统的安全性和可靠性。

weixin_36212459的博客 242

【定位模块项目实战】gnss_localizer、lidar_localizer功能包解析

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、1.2.3.4.二、1.2.3.4.三、1.2.3.4.四、1.2.3.4.总结参考资料 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对**【无人驾驶autoware项目实战】感知–定位模块**做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 一、 1. 2. 3. 4. . . 二、

qq_35635374的博客 1931

IOC使用Spring实现附实例详解

Spring IOC的实现附实例详解

qq_53317005的博客 3912

【ROS】ROS2导航Nav2:简介、安装、测试效果、错误处理

在ROS2中自动导航使用Nav2来实现。Nav2 使用几个独立的模块化服务,通过 ROS 2接口(例如动作服务器或服务)与行为树 (BT) 通信。Nav2 输入包括:TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源;Nav2 输出速度命令;Nav2 支持多种机器人,比如:四足机器人、履带机器人、轮式机器人等。

郭老二 5078

spring ioc实现原理

特性Spring IoC 实现控制反转将对象创建交给容器管理依赖注入支持字段、构造器、Setter 注入Bean 生命周期完整的初始化、销毁流程循环依赖使用三级缓存机制解决单例 Bean 循环依赖扩展机制提供多种扩展点(BeanFactoryPostProcessor、BeanPostProcessor)

红血哥 2161

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spring中ioc的实现原理

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。 IOC理解 首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/bl

qq_43842093的博客 7192

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring IOC的实现机制是什么?

Spring IOC的实现机制是什么?

java1234的博客 969

Spring之IOC底层实现原理

一、Spring框架概述 Spring框架是轻量级的开源的JavaEE框架 Spring框架可以解决企业应用开发的复杂性 Spring框架有两个核心部分:IOC和AOP Spring框架特点:方便解耦,简化开发;AOP编程支持;方便程序测试;方便和其它框架进行整合;方便事务事务操作;降低API开发难度 IOC概念和原理 1、什么是IOC? 控制反转,把对象创建和对象之间的调用过程交给Spring框架进行管理 使用IOC的目的:为了耦合度降低 做入门案例就是IOC实现 2、IOC底

Tough_dxx的博客 1万+

一文带你深入剖析Spring IOC 实现原理

IOC是什么 IOC是“Inversion of Control”的缩写,翻译过来就是“控制反转”。 我们先不深究其在Spring中的含义,先从字面上进行分析。打个比方来说:结婚前你的工资完全由你来支配,想怎么花就怎么花。结婚后变了,你的钱要上交给你媳妇了,你想花的时候得申请。此时你对工资的控制转变了,由原来的你控制,变成了你媳妇控制。这就是“控制反转”,本来属于你控制的事情,交由别人来控制,而你只在需要的时候进行获取就可以了。 Spring全家桶地址:Spring最新全家桶资料集锦 相信通过这个比喻大家对

SQY0809的博客 9340

Spring IOC:IOC在Spring底层中如何实现?

IOC,英文全称为Inversion of Control,意为反转控制。不是什么新的开发技术,而是一种开发设计思想。我们都知道在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的资源,在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式,增加了学习成本,同时降低了开发效率。这里的组件是什么?在Spring框架中,组件(Component)是指可以被Spring容器管理和配置的对象,包括Java类和Bean等。反转控制。

siaok的博客 1095

Spring IOC底层实现

众所周知,Spring最为核心的两大功能特性就是IOC和AOP。我将通过一个简单的例子让大家明白IOC的底层实现原理。 Spring IOC实现步骤 加载并且保存Spring配置文件路径信息然后保存到configLocation中 刷新Spring上下文环境 创建并且载入DefaultListableBeanFactory(即BeanFactory) 根据DefaultListableBeanF...

时间在流 361

Spring IOC源码实现

摘要:本文详细解析了Spring IOC容器的实现原理与源码结构。主要内容包括:1)Spring IOC核心流程:资源定位、Bean定义解析与注册、实例化、初始化和使用;2)核心类介绍(BeanFactory、ApplicationContext等);3)简化版IOC容器实现示例;4)源码阅读入口建议(DefaultListableBeanFactory等);5)深入讲解BeanDefinition注册、依赖注入、生命周期管理等核心机制,并提供了构造器注入的简化实现代码。

onlymscn的博客 800

《Spring》IOC实现原理

《Spring》IOC实现原理1. 概述2. 依赖倒置3. 控制反转4. 常用容器4.1 BeanFactory4.2 ApplicationContext5. Bean的作用域6. Bean的生命周期 1. 概述 IOC(Inversion of Control)控制反转,也称为DI(Dependency Injection)依赖注入。所谓IOC ,就是把原先代码里需要开发者实现的对象创建和关系依赖,反转交给SpringIOC容器管理对象的生命周期和对象之间的依赖关系。 Spring通过配置文件描述Be

飞飙的蜗牛 1万+

java ioc 实现_Spring Ioc实现机制——简析

需要明确一点,任何项目没有了Spring,也依旧能做,那么为什么Spring还会这么火?答案就是Spring的两个特性IoC与AOP,这里需要指出的是,并不是Spring提出的AOP的概念,只能说是Spring很好的实现了AOP的特性。那么,这次就先讨论下Spring IoC的实现机制。IoC是什么东东?IoC实现的机制是什么样子的?模拟Spring IoC的实现Spring源码中的IoC参考资料...

weixin_29090089的博客 491

Spring学习总结——Spring实现IoC的多种方式

一、Spring框架概述 1.1、资源 1.2、Spring历史 1.3、框架特征与功能 1.4、Spring组成 1.5、Spring Boot与Spring Cloud 二、IoC基础 三、使用XML配置的方式实现IOC 3.1、使用无参构造方法创建对象 3.2、使用有参构造方法创建对象 3.3、通过属性赋值 3.4、对象引用 3.5、对象作用域 3.6、延迟初始化bean 四、使用Spring注解配置IOC 4.1、修改BookDAO 4.2

m0_68850571的博客 3439

IOC容器在Spring中的实现

Spring 的 IOC 容器就是 IOC 思想的一个落地的产品实现。IOC 容器中管理的组件也叫做。在创建 bean 之前,首先需要创建 IOC 容器。

qq_52896771的博客 187

Spring IOC的源码实现?

IOC(Inversion of Control,控制反转)是 Spring 框架的核心,其底层实现基于。通过理解这些底层原理,可以更高效地解决 IOC 相关问题(如循环依赖、作用域失效等)。3. 初始化(@PostConstruct、InitializingBean)5. 销毁(@PreDestroy、DisposableBean)1. 实例化(调用构造器)2. 属性填充(依赖注入)

qq_36929638的博客 862
上一篇: TOMCAT用https替换http的方法
下一篇: Ioc模式解析
zaowei21
博客等级 码龄25年 38粉丝 517原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值