`
hsyliqun21
  • 浏览: 30588 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

spring 概念理解(资料)

    博客分类:
  • Java
阅读更多
一、Spring的IoC(Inversion of Control)。
这是Spring中得有特点的一部份。IoC又被翻译成“控制反转”,也不知道是谁翻译得这么别扭,感觉很深奥的词。其实,原理很简单,用一句通俗的话来说:就是用XML来定义生成的对象。IoC其实是一种设计模式,Spring只是实现了这种设计模式。

这种设计模式是怎么来的呢?是实践中逐渐形成的。

第一阶段:用普通的无模式来写Java程序。一般初学者都要经过这个阶段。
第二阶段:频繁的开始使用接口,这时,接口一般都会伴随着使用工厂模式。
第三阶段:使用IoC模式。工厂模式还不够好:(1)因为的类的生成代码写死在程序里,如果你要换一个子类,就要修改工厂方法。(2)一个接口常常意味着一个生成工厂,会多出很多工厂类。
    可以把IoC模式看做是工厂模式的升华,可以把IoC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件中给出定义的,然后利用Java的“反射”编程,根据XML中给出的类名生成相应的对象。从实现来看,IoC是把以前在工厂方法里写死的对象生成代码,改变为由XML文件来定义,也就是把工厂和对象生成这两者独立分隔开来,目的就是提高灵活性和可维护性。

    IoC中最基本的Java技术就是“反射”编程。反射又是一个生涩的名词,通俗的说反射就是根据给出的类名(字符串)来生成对象。这种编程方式可以让对象在生成时才决定要生成哪一种对象。我在最近的一个项目也用到了反射,当时是给出一个.properties文本文件,里面写了一些全类名(包名+类名),然后,要根据这些全类名在程序中生成它们的对象。反射的应用是很广泛的,象Hibernate、String中都是用“反射”做为最基本的技术手段。

    在过去,反射编程方式相对于正常的对象生成方式要慢10几倍,这也许也是当时为什么反射技术没有普通应用开来的原因。但经SUN改良优化后,反射方式生成对象和通常对象生成方式,速度已经相差不大了(但依然有一倍以上的差距)。


    所以要理解IoC,你必须先了解工厂模式和反射编程,否则对它产生的前因后果和实现原理都是无法理解透彻的。只要你理解了这一点,你自己也完全可以自己在程序中实现一个IoC框架,只不是这还要涉及到XML解析等其他知识,稍微麻烦一些。


    IoC最大的好处是什么?因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是现实于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拨(有点象USB接口和SCIS硬盘了)。

    IoC最大的缺点是什么?(1)生成一个对象的步骤变复杂了(其实上操作上还是挺简单的),对于不习惯这种方式的人,会觉得有些别扭和不直观。(2)对象生成因为是使用反射编程,在效率上有些损耗。但相对于IoC提高的维护性和灵活性来说,这点损耗是微不足道的,除非某对象的生成对效率要求特别高。(3)缺少IDE重构操作的支持,如果在Eclipse要对类改名,那么你还需要去XML文件里手工去改了,这似乎是所有XML方式的缺憾所在。

    总的来说IoC无论原理和实现都还算是很简单的。一些人曾认为IoC没什么实际作用,这种说法是可以理解的,因为如果你在编程中很少使用接口,或很少使用工厂模式,那么你根本就没有使用IoC的强烈需要,也不会体会到IoC可贵之处。有些人也说要消除工厂模式、单例模式,但是都语焉不详、人云亦云。但如果你看到IoC模式和用上Spring,那么工厂模式和单例模式的确基本上可以不用了。但它消失了吗?没有!Spring的IoC实现本身就是一个大工厂,其中也包含了单例对象生成方式,只要用一个设置就可以让对象生成由普通方式变单一实例方式,非常之简单。

   总结:
   (1)IoC原理很简单,作用的针对性也很强,不要把它看得很玄乎。
   (2)要理解IoC,首先要了解“工厂、接口、反射”这些概念。
分享到:
评论

相关推荐

    传智播客2016spring资料4

    总之,这份“传智播客2016spring资料4”是Spring框架学习的重要资源,涵盖了一系列核心概念和技术,对于想深入理解和掌握Spring框架的人来说,是非常宝贵的参考资料。通过学习这些内容,开发者能够提升自己的技能,...

    Spring中英文资料

    这个"Spring中英文资料"包含的是关于Spring 2.0版本的文档,提供了中文和英文两种语言的学习资源,对于想要深入理解Spring的开发者来说非常实用。 Spring框架的核心特性包括依赖注入(Dependency Injection,DI)、...

    spring学习资料大全

    这个文件名可能是某种简化版的Spring教程,可能包含易于理解的Spring基础知识和常见概念,例如: - **XML配置**:介绍如何通过XML文件配置Spring Bean。 - **注解驱动开发**:使用注解进行依赖注入和配置。 - **...

    Spring Security 资料合集

    这三份资料——"实战Spring Security 3.x.pdf"、"Spring Security 3.pdf" 和 "Spring Security使用手册.pdf" 将深入探讨这些概念,并提供实践指导,帮助读者掌握如何在实际项目中应用Spring Security。通过学习这些...

    一步步深入理解Spring内部原理-带源码

    Spring框架是Java开发中不可或缺...《Spring深入解析》PPTX和《SpringStudy》可能包含详细的讲解和示例,可以帮助你更好地理解和应用这些概念。在面试中,对这些原理的清晰理解会让你脱颖而出,展示出深厚的技术功底。

    方志朋版——深入理解Spring Cloud与微服务构建.pdf

    《深入理解Spring Cloud与微服务构建》是针对Java开发者,特别是对微服务架构感兴趣的开发者的一本重要参考资料。Spring Cloud作为目前最流行的微服务框架之一,它提供了构建分布式系统所需的多种工具和服务,包括...

    Spring 揭秘 全面 深入了解Spring

    《Spring 揭秘:全面深入了解Spring》是一本旨在帮助开发者深入理解并熟练掌握Spring框架的权威指南。Spring是Java企业级应用开发中的基石,它以其模块化、易用性和强大的功能深受开发者喜爱。这本书详细阐述了...

    Spring学习笔记(概念理解)

    ### Spring学习笔记(概念理解) #### 一、Spring的IoC(Inversion of Control) IoC,即控制反转,是Spring框架中的核心特性之一。通过理解IoC的基本概念及其背后的实现原理,可以帮助开发者更好地掌握Spring框架。 ...

    Spring mvn学习资料

    学习Spring和Maven时,可能会遇到各种挑战,如理解依赖注入的概念、配置Spring的XML或Java配置、管理复杂的项目依赖、掌握Maven的生命周期和插件等,但只要持续学习,不断实践,就一定能够克服困难,顺利掌握这两个...

    超好的Spring 学习资料

    "超好的Spring学习资料"这个压缩包显然包含了深入理解并掌握Spring框架的关键资源,尤其是包含的《Spring in Action》这本书,是Spring学习的经典之作。 1. **Spring框架概述**:Spring是一个开源的Java平台,它...

    《spring》相关资料

    尽管这里提到的参考资料可能侧重于Spring的早期版本,但其中的基本概念和原则在Spring Boot中同样适用。 最后,学习Spring的过程中,理解IoC(Inversion of Control,控制反转)的概念非常重要。IoC是DI的基础,...

    spring学习资料

    这个"spring学习资料"压缩包包含了多个文档,可以帮助我们深入理解并掌握Spring的核心概念和技术。 首先,"spring2.0-reference_final_zh_cn.chm"是Spring 2.0的中文参考手册,对于初学者来说非常宝贵。它详细介绍...

    java spring框架学习资料 pdf

    《Java Spring框架学习指南》是一份详尽的教育资源,旨在帮助开发者从零基础开始逐步掌握Spring框架,并深入理解其核心概念和技术。这份PDF文档全面覆盖了Spring框架的基础知识,包括IoC(Inversion of Control)...

    Spring容器的通俗理解及简单写法

    在Java开发中,Spring容器(也称为ApplicationContext或BeanFactory)扮演着重要角色,它通过控制反转(Inversion of Control, IOC)和依赖注入(Dependency Injection, DI)的概念,帮助开发者构建松散耦合的系统。...

    黑马程序员Spring框架2016版资料_day1

    在"黑马程序员Spring框架2016版资料_day1"的学习中,可能会包含创建简单的Spring MVC项目,理解DispatcherServlet、Controller、ModelAndView等概念,以及进行简单的数据库操作。这些实践将巩固对Spring的理解,并为...

    史上最最全的Spring资料

    这部分内容将帮助你理解Spring的核心概念,如Bean、ApplicationContext和Bean的生命周期。 初级教程通常涵盖Spring MVC,这是Spring框架用于构建Web应用的一部分。Spring MVC提供了一个模型-视图-控制器(MVC)架构...

    Spring资料

    1. **Spring概述**:理解Spring的基本架构,包括核心容器、数据访问/集成、Web、AOP和测试模块。了解Spring如何通过XML或Java配置来管理Bean。 2. **依赖注入**:学习如何使用IoC容器管理对象的生命周期和依赖关系...

    spring 相关资料

    2. **面向切面编程**:了解AOP的基本概念,如切面、通知、切入点等,以及如何使用Spring AOP实现日志记录、事务管理等功能。 3. **Spring MVC**:探究Spring的Web MVC框架,如何创建控制器、模型、视图和视图解析器...

    跟我学Spring,Spring3学习资料

    关于Spring3学习资料,本材料旨在为新手提供系统学习Spring3的资源和实例。在内容组织上,涵盖以下几个主要部分: ### 1. IoC(控制反转)与DI(依赖注入) - **IoC基础:** IoC是Spring的核心概念之一,通过它,...

    孙哥说Spring5完整资料.zip

    这些资料不仅能够帮助初学者从零开始,逐步了解Spring5的核心概念和编程模型,还能够通过代码示例和笔记来加深理解,掌握Spring5的使用技巧。通过这些资料的学习,初学者可以快速搭建出Spring5项目,理解Spring5如何...

Global site tag (gtag.js) - Google Analytics