Java核心技术:什么是Spring?
从简单性、可测试性和松耦合的角度来看,任何Java应用程序都可以受益于Spring。简单来说,Spring是一个控制反转(IoC)和面向方面(AOP)的轻量级容器框架。让我们从整体上了解一下Spring的主要特点:*轻量化:Spring在尺寸和成本上都是轻量化的。另外,Spring是非侵入式的:有了Spring,我们的类还是pojo类,根本不需要继承和实现Spring的类和接口。换句话说,使用Spring的应用程序中的对象不依赖于Spring的特定类。*IoC:Spring通过控制反转技术来促进松耦合。当应用IoC时,一个对象所依赖的其他对象将以被动的方式传入,而不是由该对象自己创建或寻找依赖对象。可以认为IoC与JNDI相反——我们不控制对象自己从容器中寻找依赖,而是容器在初始化时主动将依赖传递给对象,这就是DI-dependency注入。基本上,对象不必自己管理和创建。完全由容器管理,我们只是使用它。*AOP:Spring提供了面向方面的编程支持。AOP将与程序业务无关的内容分离提取出来,应用对象只意识到自己应该做的事情——完成业务逻辑——仅此而已。他们不负责其他系统级问题,如日志或事务支持。AOP将独立于业务的逻辑横切成真正的逻辑。*框架:Spring可以将简单的组件配置组合成复杂的应用。在Spring中,应用程序对象以声明的方式组合在一起,通常是在一个XML文件中。Spring还提供了许多基本功能(事务管理、持久性框架集成等。),用户也有更多的时间和精力去开发应用逻辑。Spring的所有这些特性都可以帮助我们写出更干净、更易管理、更易测试的代码。它们还为Spring中的各种模块提供基本支持。*借助Spring、郭蓉依赖注入、AOP应用和面向接口编程,降低了业务组件之间的耦合度,增强了系统扩展性。*使现有技术和框架更易于使用。*利用hibernate的SessionFactory和事务管理的封装,Hibernate可以更简洁地应用。* Spring并不完全依赖于Spring,开发者可以自由选择Spring框架的部分或全部。*使用AOP,我们可以专注于业务逻辑,减少重复代码并构建优雅的解决方案。*低侵入设计,极低代码污染。Spring致力于J2EE应用各层的解决方案,而不仅仅是专注于某一层的解决方案。可以说Spring是企业应用开发的“一站式”选择,贯穿了表示层、业务层和持久层。虽然Spring可以一站式解决整个项目问题,但是Spring并不想取代那些已有的框架,而是无缝集成。Spring可以降低各种框架的使用难度,它直接支持各种优秀的框架(如Struts、Hibernate、Hessian、Quartz等。).使用Spring的主要目的是让J2EE易于使用,促进良好的编程习惯,Spring的目标是让现有技术更易于使用。所以Spring的一个重要思想就是集成和兼容。