【Spring】ioc引入

如果我们需要一个对象,通常的方式,我们是通过直接创建的方式,也就是new方法来创建:

传统方式实现:

(1)Service接口

public interface UserService {
  void getUser(String id);
}

(2)ServiceImpl实现类


public class UserServiceImpl implements UserService {
  //把dao引入到serviceImpl
  UserDao userDao = new UserDaoImpl();
  public void getUser(String id){
      string a=userDao.queryId(id); 
  }
}

(3)UserDao接口


public interface UserDao {
   @Query(value = "select id from student where is_delete = 0 )
    String queryId(String id);
}

(5)测试类

public class Test {
  public static void main(String[] args) {
    UserServiceImpl userServiceImpl = new UserServiceImpl();
    userService.getUser();
  }
}

小结:传统应用程序创建对象的方式,每次用到我们都需要自己去创建,如果我们需要扩展一个接口,还要相应的增加好几个实现类,这会导致类与类之间高耦合,难于测试。

我们来思考一个问题,我们真的需要每次都去自己创建对象么?我们需要的对象是对象本身 ,还是他所提供的服务?如果我们只是需要它所提供的服务,那么,只要我们用到的时候能享受到它带来的服务,至于他是怎么来的对我们来说就不重要了。

ioc引入:

 Ioc全称Inversion of Control,即“控制反转”,是一种设计思想。要想理解Ioc,我们首先要知道“谁控制谁,控制什么,什么是反转,反转了什么”

  ●谁控制谁?

         IoC 容器控制了对象的创建

        传统程序设计,我们直接在对象内部通过new进行对象创建,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建。

       ● 控制什么?

        控制了对象的创建,更准确来说是控制了外部资源获取(不仅仅包括对象的创建)

  ●什么是反转?

        有反转就一定有正转,传统程序设计是由我们主动去创建对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象,我们直接被动接受就可以了,所以是反转

       ●反转了什么

        依赖对象的获取被反转了,ioc容器直接帮我们做了     

小结:ioc就相当于一个中介,我们把我们的要求告诉中介,中介根据我们的要求争去寻找我们想要的,最后把我们要的给我们。我们需要做的只是告诉他们我们的要求和得到我们想要的,这也就是ioc所做的,需要什么东西让别人送过来,省去了自己的一系列操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值