SpringIOC的底层实现原理

一、传统方式的开放

比如定义一个接口的实现类:
UserService us = new UserService();
该方式没有体现面向接口编程的思想。

二、面向接口编程

UserService us = new UserServiceImpl();
在web层中创建service层(业务层)的实现类,使得web层与service层产生了耦合;
并没有遵守ocp原则

OCP原则

即open-close原则:对程序的扩展是open的,对修改程序代码是close的。
尽量做到不修改程序的源码,实现对程序的扩展。

三、工厂模式

创建一个工厂类,通过工厂类来创建service接口的实现对象。

class FactoryBean{
	public static UserService getUs(){
		return new UserServiceImpl();
	}
	.......
}

但是如果实现类发现变化,还是需要修改FactoryBean类中的代码,由此可见还是存在耦合,该方案仍然存在不足;

四、工厂+反射+配置文件

(1)先在配置文件中配置一个bean,如<bean. id=“us” class=“com.service.impl.UserServiceImpl”>

(2)通过向工厂类方法中传入id值,解析XML文件,通过id找到对应的bean

class FactoryBean{
	public static Object getBean(String id){
		...
		反射
	}
}

再通过class名,利用Java的反射机制生成对应的class类,从而完成解耦。

#撕破伤口丶#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值