Spring的IOC的底层实现原理

 

  • Spring的IOC底层原理实现
  1. 传统方式的开发:
    UserService us = new UserService();
    在Web层直接创建一个业务层的对象
    缺陷:没有面向接口编程
  2. 改进:通过面向接口编程
    UserService us = new UserServiceImpl();
    在Web层通过业务层的接口创建了实现类
    缺点:Web层与业务层产生了耦合,不符合OCP原则(修改关闭,扩展开放)
  3. 改进:使用工厂模式
    由原来直接用接口创建实现类 改为 通过用工厂来创建实现类
    工厂类代码:
    class FactoryBean{
    public UserService getUs() {
    return new UserServiceImpl();
    }
    ......
    }
    耦合关系变为:接口和工厂类耦合
    获得对象实例:UserService us = FactoryBean.getUs();
    如果需要切换底层实现,虽然不用改获得实例的代码但是需要改工厂类的代码。
    
  4. !!!那有没有一种方法可以不需要修改任何的源代码呢?
    方案:使用工厂+反射+配置文件(xml)(可以完成程序的解耦合)
    <bean id="us" class:"com.imooc.UserServiceImpl"/>
    
    class FactoryBean{
    public static Object getBean(String id) {
    ...
    反射
    }
    }
    原理:在工厂类中通过解析xml文件的<bean>标签,根据传入的id去创建对应类型的对象

例题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值