一直使用Struts,由于在换工作的过程中,发现对Spring要求越来越多,所以开始学习这个甚为流行的框架。。
文章全文为转载“Irving_wei”的文章,觉得跟刚入学SPRING的我还是蛮合适的。。所以全文转载,多谢!
另,我也特别喜欢Irving_wei兄博客中的那句“现在我来了,你们看到的也将因此改变”,一并粘上,与大家分享。
http://irving-wei.iteye.com/blog/344071
http://irving-wei.iteye.com/blog/344792
以下为全文:
天第一次接触Spring,对IoC的感觉就是:把所有的类之间的联系全部放到XML里面进行管理,从而减小类和类之间的关系,用类和配置文件(xml)之间的联系来取代类和类之间的联系。当要用到关联类的实例的时候,就只要实例化一个XmlBeanFactory对象,获取到相应关联类的bean实例,调用实例实现类的具体方法,最后释放XmlBeanFactory对象。
所谓依赖注入中“注入”的理解,就是把有关联的类的“ID”(自定,唯一),和它的路径配置到Xml里面。
Spring的依赖注入,也称作是“反转控制”。
当一个类A需要用到另一个类B的对象的时候,通常情况下,就是在A中实例化一个B类的对象,然后通过对象来调用B类中的非私有变量和方法。这是不符合工厂设计模式的要求的,并且这样的设计方式存在很多的缺陷:
其一,A类去主动调用B类的构造方法,这就使得A类和B类之间的关系非常紧密,在Java程序设计的过程中,这种两个类之间关系非常紧密的情况是非常忌讳发生的,因为结合紧密的两个类在程序设计过程中会很难进行调试,尤其是在大的程序中,如果一连串的类之间发生调用关系,那么如果其中某一个类发生了改变,或者说某一个或者几个类发生了错误,需要调试,那么,所有调用到这几个类的类都要进行相应的修改,这是很麻烦的事情。
其二,A类调用B类的方法,这就说明,A类必须知道B类方法的实现方式,这样使得AB之间的耦合度相当高,这也是不利于Java程序设计的。整个java程序设计的发展历史,就是一个怎样在类与类之间解耦的过程,让有关联的类处于一个松耦合的状态,这是java编程所追求的一个目标。
Spring框架是工厂设计模式的一个非常好的体现,也同样特别注意了“解耦”,同样,它也是用接口的方式将程序解耦发挥到一个新的境界的框架。
同样引用上面的例子,类A需要用类B的方法,在Spring框架中,不再是由A去主动调用B的构造方法,而是由Spring容器来完成,Spring容器只需要知道A需要得到哪个Bean的实例,就会帮A去创建一个B的实例,并不需要A自己去调用B的构造方法,Spring怎么知道A需要哪个Bean的实例?这就要涉及到Spring的IoC容器,它是一个“工厂”,可以对每个Bean以配置文件的形式进行管理,而A需要B对象的时候,就只要创建一个工厂实例,然后通过工厂实例来获得一个B的bean实例,这样就可以去使用类B的非私有成员了。
从整体上看,所有的类并没有和于它关联的类有任何的直接联系,所有的类都通过配置文件的形式,“挂”到Spring容器里去了,由Spring容器统一管理。调用者直接等待容器把被调用者的实例“注入”进来,然后使用。由此可以想象,Spring容器的功能应该有多强大。
分享到:
相关推荐
新手小白必备的spring资料包免费领取!该资料包以脑图形式将大佬们的总结整理了出来,帮助各位新入门的同学更好地理解。
使用spring和hibernate的Annotation的小项目,帮助新手理解annotation
对spring依赖注入原理进行了详细说明和解析,过程详实,思路清晰,便于新手理解和学习spring依赖注入的核心要义。
描述了新手搭建Spring 下的开发环境,深入浅出理解MVC 模型开发框架,提供hiberate的基本教程使用
最近的项目在用Spring3,涉及到了基于注解的MVC,事务管理,与hibernate的整合开发等内容,我打算写一个系列出来,记录下这个痛苦但又充满成就感的过程----网上实在太难找能让新手快速理解掌握的文章了 我打算从这几...
Spring+SpringMVC+Mybatis(项目源码+数据库);适合新手,增强理解! Spring+SpringMVC+Mybatis(项目源码+数据库);适合新手,增强理解!
:notebook: Core Spring 5.0认证考试学习指南 :notebook: :star: 在GitHub上为该项目加注星标-有帮助!! 或帮助我做得更好! 目录 (14个考试题) (7个关于考试的问题) ... 确保您向后理解Spring Lifecy
- starsea-mall 对新手开发者十分友好,无需复杂的操作步骤,**仅需 1 秒就可以启动这个完整的商城项目;** - starsea-mall **也是一个企业级别的 Spring Boot 大型项目,对于各个阶段的 Java 开发者都是极佳的选择...
该PPT资源适合SSM框架0基础的新手入门,涵盖了许多基础知识和概念,便于小白的理解。同时包含了代码案例,图文并茂、讲解丰富、将理论与实际相结合,可用于自学,也可用于教师的讲义。
该源码是课程 Java Spring...阅读建议:此资源以开发简化的案例做为Spring学习上手的基础,快速掌握代码编写实现,注重快速掌握Spring,能使新手尽快上手进入开发,同时了解实际应用后,对进一步理解概念更加有促进作用
本源码适合新手学习,简单易懂,它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于mvc系统的框架,对于初学者或者想了解mvc的人来说我觉得 spring是最好的,它的实现就是教科书!...
毕业设计是高等教育阶段学生在完成学业前所进行的一项重要学术任务,旨在检验学生通过学习所获得的知识、技能以及对特定领域的深刻理解能力。这项任务通常要求学生运用所学专业知识,通过独立研究和创新,完成一个...
ssh基础教程,内容详细,清晰,便于理解,适于新手,或刚接触ssh框架技术的人
这本书是为那些对学习Spring Framework感兴趣的人而设计的。 需要具备Java编程和Web应用程序的先验知识。 无论您在团队,开发人员,架构师或经理中扮演什么角色,本文都将帮助您以最有效和最相关的方式获得真正适用...
入门不久的可以下载试试看,里面内容不多,但是学了的都能理解,属于新手理解向。 想学习SpringMVC框架或者Spring框架的可以先试着看看,不会的也可以问问我呀之类的,我也对于这个代码写了一些简单的文章,相当于...
适合新手学习SSH的组建,可以详细了解一下开发的业务流程,便于理解开发的思路,很不错的一个小程序,扩展性很强
等概念没有很深刻的理解。通过这次动手配置 SSM 框架,真的是深刻体会到 Spring IoC 和 Bean 在实际开发中的重要意义。 项目地址: (一) 项目回顾 在上次 Java Web 项目: 中,我尝试用最原生的 Java 语言(或者说 ...
本项目没有使用数据库,通过编写dao层类模拟数据库的数据操作,降低因数据库绑定的复杂度从而专心于业务开发,有助于理解springweb项目的开发流程和构造过程,数据是通过map集合自己构造,非常适合新手参考。...
****比较适合新手理解SSH框架***** 闲下来搭了个SSH框架,写些小系统的话可以直接拿来用哦。 连接池是proxool,log4j日志,拦截器过滤器什么的都有。 基本上每个地方以及每个配置文件,每行,都有相关的说明。全...