客观面试题--22.浅析Spring?

1.Spring 框架概述

Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:

控制反转)和 AOP(Aspect Oriented Programming:面向切面编程)为内核。

控制反转控制反转(Inversion of Control,英文缩写为IoC)把创建对象的权利交给框架,是框架的重要特征,并非面向对象编程的专用术语。它包括依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。

面向切面编程AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。

2. Spring的优势

方便解耦,简化开发:

    通过 Spring 提供的 IoC 容器,可以将对象间的依赖关系交由 Spring 进行控制,避免硬编码所造
成的过度程序耦合。用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可
以更专注于上层的应用。

AOP  编程的支持:

    通过 Spring 的 AOP 功能,方便进行面向切面的编程,许多不容易用传统 OOP 实现的功能可以通
过 AOP 轻松应付。

声明式事务的支持:

    可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务的管理,
提高开发效率和质量。

方便程序的测试:

    可以用非容器依赖的编程方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可
做的事情。

方便集成各种优秀框架:

    Spring 可以降低各种框架的使用难度,提供了对各种优秀框架(Struts、Hibernate、Hessian、Quartz
等)的直接支持。

降低 JavaEE API :

    Spring 对 JavaEE API(如 JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些 API 的使
用难度大为降低。

Java  源码是经典学习范例:

    Spring 的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对 Java 设计模式灵活运用以
及对 Java 技术的高深造诣。它的源代码无意是 Java 技术的最佳实践的范例。

3.Spring的体系结构

客观面试题--22.浅析Spring?_第1张图片

图中将spring分为5个部分:core、aop、data access、web、test,图中每个圆角矩形都对应一个jar,如果在maven中配置,所有这些jar的“groupId”都是“org.springframework”,每个jar有一个不同的“artifactId”,另外,“instrumentation”有两个jar,还有一个“spring-context-support”图中没有列出,所以spring3的jar包一共是19个

下面介绍这5个部分的jar以及依赖关系

core

core部分包含4个模块

  1. spring-core:依赖注入IoC与DI的最基本实现

  2. spring-beans:Bean工厂与bean的装配

  3. spring-context:spring的context上下文即IoC容器

  4. spring-expression:spring表达式语言

它们的完整依赖关系

客观面试题--22.浅析Spring?_第2张图片

aop

aop部分包含4个模块

  1. spring-aop:面向切面编程

  2. spring-aspects:集成AspectJ

  3. spring-instrument:提供一些类级的工具支持和ClassLoader级的实现,用于服务器

  4. spring-instrument-tomcat:针对tomcat的instrument实现

它们的依赖关系

客观面试题--22.浅析Spring?_第3张图片

data access

data access部分包含5个模块

  1. spring-jdbc:jdbc的支持

  2. spring-tx:事务控制

  3. spring-orm:对象关系映射,集成orm框架

  4. spring-oxm:对象xml映射

  5. spring-jms:java消息服务

它们的依赖关系

客观面试题--22.浅析Spring?_第4张图片

web

web部分包含4个模块

  1. spring-web:基础web功能,如文件上传

  2. spring-webmvc:mvc实现

  3. spring-webmvc-portlet:基于portlet的mvc实现

  4. spring-struts:与struts的集成,不推荐,spring4不再提供

它们的依赖关系

客观面试题--22.浅析Spring?_第5张图片

test

test部分只有一个模块,我将spring-context-support也放在这吧

  1. spring-test:spring测试,提供junit与mock测试功能

  2. spring-context-support:spring额外支持包,比如邮件服务、视图解析等

它们的依赖关系

客观面试题--22.浅析Spring?_第6张图片

下面介绍spring4,与spring3结构基本相同,下面是官网给出的结构图

客观面试题--22.浅析Spring?_第7张图片

可以看到,图中去掉了spring3的struts,添加了messaging和websocket,其他模块保持不变,因此,spring4的jar有20个

  1. spring-websocket:为web应用提供的高效通信工具

  2. spring-messaging:用于构建基于消息的应用程序

你可能感兴趣的:(客观面试题目汇总)