对Spring_IOC机制的理解

一、原始的tomcat+servlet的编码原理

当浏览器向Tomcat监听的端口发送http请求时,Tomcat会调用对应的servlet处理该请求;
在这里插入图片描述
在Servlet中通过new对象来生成要用到的业务处理类

public class MyServlet{

	//通过new来生成业务处理对象
	private MyService myService = new MyServiceImpl();

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

存在问题:

对于业务接口MyService和实现类MyServiceImpl

public interface MyService{
}

public class MyServiceImpl implements MyService{
}

假设系统中有几十个地方都需要用到

MyService myService = new MyServiceImpl();

去创建、引用和依赖了MyServiceImpl对象;
如果这个时候我不想用MyServiceImpl了,希望改成用同样继承MyService接口的NewMyServiceImpl实现类,此时就需要在几十个地方都去修改对应的代码;
可能会导致改动代码的成本很大,改动完之后测试的成本也很大,也可能出现一些bug;
归根结底就是因为代码里各种类之间完全耦合在一起,出现任何一点的变动都需要改动大量的代码,重新测试。

二、SpringIOC框架

@Controller
public class MyController{

	//通过Resource注解来注入实现类
	@Resource
	private MyService myService;

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

@Service
public class NewMyServiceImpl implements MyService{
}

只要在控制器类上加上@Controller注解,在需要注入的实现类上加上@Service注解,导入SpringIOC需要的依赖,Spring容器就会找到MyService接口对应的实现类NewMyServiceImpl ,并且生成对象实例注入给myService。

SpringIOC机制使得系统的类与类之间彻底的解耦合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值