【回顾】Spring IOC机制

本文阐述了Spring IOC机制如何通过控制反转和依赖注入避免代码耦合,降低系统维护成本。通过对比无Spring时的直接new,讲解了Spring容器的自动配置和注解使用,强调了其反射技术在实现松耦合中的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring IOC

一、当没有Spring IOC机制时

如果要写一套系统,假设使用tomcat作为web服务器,启动后,它就可以去监听一个端口号的http请求,然后可以把请求转交给特定的servlet或者jsp。
如图所示:
在这里插入图片描述
当在Servlet中对浏览器发送过来的http请求进行处理时,就有可能出现问题:

public class MyServlet{

private MyService myService = new MyServiceImpl(); 

	public void doPost(HttpServletRequest request){
		//调用自己的业务逻辑组件,去执行一些业务逻辑
		myService.doService(request);
	}

}

显然,当我们要使用Service组件的时候,是通过自己new的方式去new出来的对象。

问题:
如果在系统中,有几十个地方都是直接new出来的对象:

MyService myService = new MyServiceImpl(); 

即有几十个地方和MyServiceImpl这个类耦合在一起了;如果我现在不想用MyServiceImpl了,需要换成NewServiceManagerImpl时,此时就需要在系统中的几十个地方都去修改MyServiceImpl这个类,替换为NewServiceManagerImpl。

归根结底,就是代码里各种类之间完全耦合在一起了,出现任何一点变动,都需要改动大量的代码,重新测试,可能还会有bug。

二、出现Spring IOC框架之后

IOC机制即控制反转,依赖注入
以前可以通过xml文件来进行配置bean,现在进化到了基于注解来进行自动依赖注入;
比如:

@Controller
public class MyController{

	@Resource
	private MyService myService;

	public void doPost(HttpServletRequest request){
		//调用自己的业务逻辑组件,去执行一些业务逻辑
		myService.doService(request);
	}

}

我们只需要在这个工程里通过maven引入一些spring框架的依赖,ioc功能。tomcat在启动的时候,就直接会启动spring的容器,spring容器会去扫描我们所有的代码,根据注解信息,由容器本身去创建相应的类对象。
如图所示:
在这里插入图片描述

三、总结

spring ioc机制:
tomcat启动时先创建一个spring容器,容器根据xml配置,或者你的注解,去实例化你的一些bean对象;
再去对bean对象之间的引用关系,去进行依赖注入。

Spring IOC底层的核心技术是反射,让系统的类与类之间彻底的解耦合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值