您的位置:首页 > 编程语言 > Java开发

Spring02:IOC理论推导

2020-07-07 12:07 77 查看

2、IOC理论推导

  1. IOC(inversion of control)是一种设计思想,DI(依赖注入)是实现IOC的一种方法

  2. 之前我们要写一个业务应该写一下这几步:

    UserDao接口

  3. UserDaoImplement实现类

  4. UserService业务接口

  5. UserServiceImplement实现类

  6. 外界只需要调用service层就可以了,不用看到Dao

  7. 注:这样子我们的代码量特别大,要是UserDao的实现类特别多,在UserServiceImpl中想调用不同的UserDao实现类, 那我们就要修改代码去完成不同的多态,这样会显得非常麻烦

    private UserDao dao = new UserDaoMysql();
    private UserDao dao = new UserDaoSQLServer();
    private UserDao dao = new UserDaoOracle();
    // 等等....
    // 我们需要使用dao层的不同实现类,需要去service实现类里面修改对应的实现,特别麻烦
  • 我们在UserService的实现类中使用set方法(接口)实现,相对以前,发生了革命性的变化。

    private UserDao dao;
    //使用set方法,动态的控制UserDao对象的创建,通过多态
    //我们在调用方法的时候,传入该接口(这个接口是dao接口)的不同实现类
    public void setDao(UserDao dao) {
    this.dao = dao;
    }
  • 现在去我们的测试类里 , 进行测试 :

    //我们在调用方法的时候,传入该接口(这个接口是dao接口)的不同实现类
    @Test
    public void test(){
    UserServiceImpl service = new UserServiceImpl();
    service.setUserDao( new UserDaoMySqlImpl() );
    service.getUser();
    //那我们现在又想用Oracle去实现呢
    service.setUserDao( new UserDaoOracleImpl() );
    service.getUser();
    }
  • 之前,程序是主动创建对象,控制权在程序员手上,用户的每一次需求,我们都回去该后端的代码,Dao是写死的

    //写死了
    private UserDao dao1 = new UserDaoImol1();
    private UserDao dao2 = new UserDaoImol2();
    private UserDao dao3 = new UserDaoImol3();
  • 现在使用了set注入之后,程序不再具有主动性,而是变成了被动的接受对象!

  • 这种思想,从本质上解决了问题,我们程序员不再去管理对象的创建了,系统的耦合性大大降低,可以更加专注的在业务的实现上!这是ICO的原型

  • 个人认为,所谓的控制反转, 就是:获得依赖对象的方式反转了

    原来:


    IOC:

  • IOC本质

    1. 控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,没有IoC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。

    2. IoC是Spring框架的核心内容,使用多种方式完美的实现了IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现IoC。

    3. Spring容器在初始化时**先读取配置文件**,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从Ioc容器(其实就是配置文件中的beans)中取出需要的对象。

    4. 采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。

    5. 控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependency Injection,DI)。

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: