《Spring技术内幕》(1) 设计理念和整体架构

244 阅读3分钟

一、Spring的设计目标

1.1 设计理念

在javaEE的应用的开发中,支持POJO和只用JavaBean的开发方式,使应用面向接口开发,充分支持OO(面向对象)的设计方法。松耦合的设计理念。定位于提供整体平台的解决方案.
面向对象、松耦合的设计理念:绑定的是IOC容器和AOP模块,面向接口开发并不依赖于具体的产品实现。
轻量级的特性,推崇POJO开发。

1.2 IOC容器

IOC容器来管理POJO对象,以及他们之间的耦合关系,使企业的信息(数据)资源可以用简单的Java语言来抽象和描述。

1.3 AOP模块

以动态和非入侵的方式来增强服务的功能。实现AOP采用多种方式,集成了 AspectJ 框架,也有ProxyFactory这种代理工厂的模式。在代理工厂的实现中,既有直接使用JVM动态代理AopProxy的实现,也有使用第三方代理类库CGLIB(字节码技术)的实现。

二、Spring的整体架构

以AOP和IOC为基础的整体框架。

2.1 Spring IOC

包括最基本的IOC容器BeanFactory的接口与实现。包含Resource访问资源的抽象与定位等。以及更高形态的ApplicationContext应用上下文,如FileSystemXmlApplicationContext、ClassPathXmlApplicationContext。

2.2 Spring AOP

Spring集成了AspectJ作为AOP的特定实现,同时还在JVM动态代理/CGLIB的基础上,实现了一个AOP框架,作为集成Spring集成其他模块的工具,比如TransactionProxyFactoryBean声明式事务处理。在这个模块中,SpringAOP实现了 建立AOP代理对象,实现AOP拦截器,直至实现各种Advice通知的过程。

2.3 Spring MVC

以DispatcherServlet为核心,实现了MVC模式,包括与WEB容器环境的集成,WEB请求的拦截、分发、处理和ModleAndView数据的返回,以及集成各种UI视图展现和数据表现,如PDF、Excel等。

2.4 Spring JDBC/Spring ORM

在JDBC规范的基础上,Spring对JDBC做了一层封装,使通过JDBC对数据库的操作更加简洁。同时提供了许多对ORM工具的封装,如Hibernate、iBatis等。

2.5 Spring 事务处理

是一个通过SpringAOP实现自身增强的典型模块。只需要在IOC容器中对事务属性进行配置即可完成,事务处理的基本过程与具体的事务处理器无关。

2.6 Spring 远程调用

Spring 将应用解耦,一方面降低应用复杂度,另一方面将解偶后的应用模块分布式部署,以提高性能。远程调用是通过Spring封装对spring应用和spring应用的端到端调用。

三、Spring的应用场景

SpringJDBC相对于Hibernate,功能上单薄,Hibernate还提供了各种数据的查询、方便的对象和关系数据的映射等。
Spring在SSH框架中使得应用直接部署到Tomcat这个Web服务器上。

四、Spring的特点

  • 非入侵性框架。
  • 一致的编程模型,POJO开发。
  • 面向对象和面向接口编程,提高了代码的重用性和可测试性。
  • 改变了体系结构的选择,Spring帮我们选择不同的技术实现。