美文网首页IT修真院_JAVA
SPRING中的IOC是什么意思,为什么要用IOC而不是NEW来

SPRING中的IOC是什么意思,为什么要用IOC而不是NEW来

作者: f056917 | 来源:发表于2017-11-28 10:49 被阅读0次

    大家好,我是IT修真院郑州分院第七期的学员冯亚超,一枚正直纯洁善良的JAVA程序员 今天给大家分享一下,SPRING中的IOC是什么意思,为什么要用IOC而不是NEW来创建实例?

    1.背景介绍

    平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法。这种开发存在的问题是 new 的类实例不便于统一管理,spring 提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。

    2.知识剖析

    IOC即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”

    谁控制谁,控制什么?IoC 容器控制了对象主要控制了外部资源获取

    为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

    谁依赖于谁:当然是应用程序依赖于IoC容器;

    为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;

    谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;

    注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。

    spring依赖注入的形式

    1、Setter方法注入

    2、构造方法注入

    3、静态工厂的方法注入

    4、实例工厂的方法注入

    手动装配

    通过在 或者 标签中使用ref属性,在上一小节的“依赖注入”部分使用的就是手动装配

    ref即引用,引用一个bean

    value给对象属性赋值

    自动装配

    我们可以通过 @Autowired 在 Bean 类中使用自动装配功能

    @Autowired默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualifier一起使用;

    3.常见问题

    什么是Bean?

    byName与 byType有什么区别?

    4.解决方案

    什么是Bean?

    由IoC容器管理的那些组成你应用程序的对象我们就叫它Bean, Bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。

    byName:通过属性的名字的方式查找JavaBean依赖的对象并为其注入

    byType:通过属性的类型查找JavaBean依赖的对象并为其注入

    5.编码实战


    undefined_腾讯视频

    6.扩展思考

    spring的依赖注入到底有什么优势?

    让使用者不需要自己去创建或获取自己的依赖,既然创建或获取的过程不是使用者控制的。

    这也就意味着,当我需要切换依赖时,不需要改变使用者的代码。这当然要结合面向接口编程等思想,也许有人要说我一个接口就只有一个实现,何必用接口,我也基本不会去切换自己的实现。

    说的对,然而就算你只有一个实现。 但是你往往会用到AOP吧,其实用代理对象替换原对象也算是切换了实现。什么日志,权限检查,异常处理等等需求。

    7.参考文献

    http://hck.iteye.com/blog/1578641

    http://blog.csdn.net/jiesa/article/details/48649205

    http://blog.csdn.net/u011225629/article/details/47143051

    --------------------------------------------------------------------------------------------------------------------

    “我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

    这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧 !

    相关文章

      网友评论

        本文标题:SPRING中的IOC是什么意思,为什么要用IOC而不是NEW来

        本文链接:https://www.haomeiwen.com/subject/cnssbxtx.html