初识Spring框架
Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程)。
什么是Spring?
Spring 是一个轻量级的 DI / IoC 和 AOP 容器的开源框架,来源于 Rod Johnson 在其著作《Expert one on one J2EE design and development》中阐述的部分理念和原型衍生而来。
Spring 提倡以“最少侵入”的方式来管理应用中的代码,这意味着我们可以随时安装或者卸载 Spring。
Spring适用于Java应用,简化了Java开发。此外,Spring 以海纳百川的胸怀整合了开源框架中众多的三方框架,逐渐成为使用最多的JavaEE企业应用开源框架。
Spring中的术语
框架
框架是完成一定功能的半成品。
框架可以帮我们完成的是:项目的整体框架,一些基础功能,规定了类和对象如何创建、如何协作等。
当我们开发一个项目时,框架帮助我们完成一些基础的功能,我们再去完成一些项目相关的业务功能,那这个项目就完成了。
非侵入式设计
从框架角度理解无需继承框架提供的任何类。
这样我们在更换框架时,之前的代码几乎可以继续使用。
JavaBean
符合JavaBean 规范的Java类。
POJO
即 Plain Old Java Objects,简单老式 Java 对象。
它可以包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不继承或不实现任何其它Java框架的类或接口。
容器
在日常生活中容器就是一种盛放东西的器具,从程序设计角度看就是装对象的的对象,因为存在放入、拿出等操作,所以容器还要管理对象的生命周期。
Spring的优势
低侵入 / 低耦合 (降低组件之间的耦合度,实现软件各层之间的解耦。 )
声明式事务管理(基于面向切面,在Spring中我们通过声明式方式灵活地进行事务管理,有效的提高开发效率和质量)
方便集成优秀框架(如Mybatis、Hibernate等)
降低JavaEE API的使用难度(如JDBC、JavaMail、远程调用等)
Spring源码是经典学习之道(如果想在短时间提高技术水平,学习和研究Spring源码将会使你收到意想不到的效果)
Spring能帮我们做什么
Spring 能帮我们根据配置文件创建组装对象之间的依赖关系。
Spring 面向切面编程帮助我们无耦合实现日志记录、性能统计、安全控制。
Spring 非常简单的帮我们管理数据库事务。
Spring 提供三方数据访问框架(Hibernate、JPA)无缝集成,而且自己提供了JDBC的访问模板.
Spring 提供了第三方Web(如Struts1/2、JSF)框架无缝集成,而且提供了一套Spring MVC框架,来方便web层搭建。
Spring 能方便与JavaEE (如Java Mail、任务调度)整合、与更多技术整合(比如Redis、MongoDB)。
Spring 框架结构图
数据访问与集成
JDBC
使用JDBC代码会导致大量的样板式代码,如数据库连接、创建语句、处理结果、关闭数据库的操作。
Spring的JDBC和DAO模块抽象了这些样板式代码,使我们的数据库代码简单明了,还可以避免因为关闭数据库资源失败而引发的问题。
Transaction声明式事务管理
Spring提供了ORM模块在对DAO支持之上,并为多个ORM框架提供了一种构建DAO的简便方式。Spring没有创建爱你自己的ORM解决方案,而是对许多流行的ORM框架进行集成。包括Hibernate、Java Persisternce API、Java Data Object。
OXM 简单理解
例 如,您可能有一个带有几个属性的简单 bean,且您的业务需要将那个 Java 对象转换为一个 XML 文档。Spring 的 O/X Mapper 能够为您解决那个问题。如果反过来,您需要将一个 XML 文档转换为一个简单 Java bean,Spring 的 O/X Mapper 也能胜任。
Messaging模块
Spring Framework 4 包含了一个新的spring-messaging 模块,该模块从使用了 Spring Integration 工程的核心概念如 Message, MessageChannel,MessageHandler和别的一些可以作为消息架构的基础组件。这个模块同样也提供了一些映射消息到方法的注解,类似于基于编程模型的spring mvc注解。
JMS模块
Java消息服务(Java Message Service ,JMS)是一个Java标准,定义了使用消息代理的通用API。借助JMS,所有遵从规范的实现都使用通用的接口,这就类似于JDBC为数据库操作提供了通用的接口一样。
Spring通过基于模板的抽象为JMS功能提供了支持,这个模板也就是JmsTemplate。使用JmsTemplate,能够非常容易地在消息生产方发送队列和主题消息,在消费消息的那一方,也能够非常容易地接收这些消息。Spring还提供了消息驱动POJO的理念:这是一个简单的Java对象,它能够以异步的方式响应队列或主题上到达的消息。
Web与远程调用
包含了Web、Web-Servlet、WebSocket、Web-Porlet模块。
Instrumentation
Spring的Instrumentation模块为JVM添加代理(agent)功能。为Tomcat提供一个织入代理,能够为Tomcat传递类文件,就像这些文件是被类加载器加载的一样。
Spring的AOP
在AOP模块中,Spring对面向切面编程提供了丰富的支持。这个模块是Spring应用中开发切面的基础。
Spring核心容器(Core Container)
容器是Spring框架最核心的部分,它管理Spring应用中bean的创建、配置和管理。在该模块中,包括了Spring bean工厂,它为Spring提供了DI功能。基于bean工厂,我们会发现有多种Spring 应用上下文的实现,每一种都提供了配置Spring的不同方式。该模块提供了许多企业服务(如E-mail、JNDI访问、EJB集成和调度)
Test模块
支持使用JUnit和TestNG对Spring组件进行测试。
总结
现在您应该对Spring的功能特性有了一个清晰的认识。Spring 简化企业级Java开发,促进代码的松散耦合。成功的关键在于依赖注入和AOP。后续文章我们会来聊聊IOC和AOP,用代码的方式让您更加深入的理解。