IOC的实现原理

IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。

IOC 也是利用 JAVA 的反射机制 ,IOC 注重的是代码关系之间的无侵入性,具体来说 spring 更注意这个特点,就是说要将代码之间的关系隔离到代码外部 , xml 文件中进行配置 , 每当代码结构变更时 , 双方的代码都不要被改动即可实现移植 .
" 如果你需要一个东西 , 那么不是你自己去取 , 而是发个指令,有人会送给你 "," 站着别动,我来找你 ".
这两句话什么意思呢 , 比方说
          public UserServiceImpl{   
               UserDao userDao;   
               setUserDao(UserDao userDao){   
                 this.userDao = userDao;   
               }   
          }  
 
这个 userDao, 不需要 UserServiceImpl 自己去创建这个 UserDao 对象 , IOC 容器主动根据 UserServiceImpl 提供的 setUserDao UserDao 实现的对象赋给 userDao, 这种用 set 函数设值的方式有叫做 type3, 用构造器设值叫做 type2, 用接口设值成为 type1.

那么怎么才能在运行时期把 userDao 设置上去呢 , 答案是通过反射机制 , 在运行时 , 通过反射反射出 UserDao 的实现类的对象 , 并通过反射得到 UserServiceImpl setUserDao 方法 , 将刚才反射得到的 UserDao 实现类的对象传给 setUserDao 方法 , 就完成了设值工作。这些设值的工作是在加载 spring 文件构造 Bean 工厂的时候就完成的 . 所以启动完毕,每个对象中的需要注射的属性是有值的 .就是这样的达到容器管理 Bean 的效果 .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值