Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。

一、Spring的七大模块

Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式。

组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

1、核心容器(Spring Core):核心容器提供Spring框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

**2、Spring 上下文(Spring Context):**Spring上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。

3、Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。

4、Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。

5、Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

6、Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

7、Spring Web MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。

二、面向切面的编程——Spring AOP

面向切面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。

AOP的通俗理解:一个组件A,不关心其他常用的服务组件B,但是这个组件A使用组件B的时候,不是组件A自身去调用,而是通过配置等其他方
式,比如Spring中可以通过xml配置文件。在这样就使得A压根就不需要知道服务组件B是怎样的,爱存在不存在,爱怎么存在都与A无关。A只关心自己的业务逻辑,具体A使用B的时候,配置文件去做,与具体的A组件无关。

三、IOC

控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。

在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。下表列出了 IOC 的一个实现模式。

类型 1:

服务需要实现专门的接口,通过接口,由对象提供这些服务,可以从对象查询依赖性(例如,需要的附加服务);

类型 2 :

通过 JavaBean 的属性(例如 setter 方法)分配依赖性 ;

类型 3 :

依赖性以构造函数的形式提供,不以 JavaBean 属性的形式公开 。

Spring 框架的 IOC 容器采用类型 2 和类型3 实现。

参考Spring官方文档:
http://www.ibm.com/developerworks/cn/java/wa-spring1/index.html

【Spring学习】Spring简介相关推荐

  1. Spring学习-Spring核心技术(九)

    Spring中面向切面编程-AOP 1. AOP概念 2. AOP的功能和目的 3. AOP代理 4. 基于@AspectJ的AOP支持 (1) 启动@AspectJ支持 1) 使用Java配置方法开 ...

  2. Spring学习-Spring Tx

    一.概述 Spring Tx 全称为 Spring Transaction Management(Spring 事务管理),是 Spring 为 DB 事务管理提供过的一种便捷的接入方式. 二.导入依 ...

  3. spring 学习—spring的相关概念(01)

    1.spring 是开源的轻量级的框架 开源的意思是:免费的提供源代码 轻量级的意思是:此框架的使用不需要依赖于其他的东西,可以直接使用 2.spring 核心的主要两个部分 (1)aop: 面向切面 ...

  4. Spring 学习——Spring AOP——AOP配置篇Advice(有参数传递)

    声明通知Advice 配置方式(以前置通知为例子) 方式一 <aop:config> <aop:aspect id="ikAspectAop" ref=" ...

  5. Java 系列之spring学习--spring搭建(一)

    一.新建maven项目 二.引入spring jar包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...

  6. spring 学习—spring 的ioc底层原理(03)

    2.画图分析ioc实现的原理

  7. spring 学习—spring 的ioc底层原理(02)

    IOC的底层原理 1.ioc底层原理使用技术 (1) xml配置文件 (2) dom4j 解决xml (3)工厂设计模式 (4)反射 什么叫做耦合度太高了:就是关联度太紧密了 高内聚与低耦合 高内聚: ...

  8. Spring学习(三)Spring AOP 简介

    本文借鉴:Spring学习(特此感谢!) 一.简介 定义 aop就是面向切面编程,在数据库事务中切面编程被广泛使用. 在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能. 核心业务:比如登陆 ...

  9. Spring学习(二)Spring IoC 和 DI 简介

    本文借鉴:Spring学习(特此感谢!) 一.IOC(控制反转) 定义:反转控制 (Inversion Of Control)的缩写,即创建对象的反转控制. 正向控制:若要使用某个对象,需要自己去负责 ...

  10. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

最新文章

  1. Soldier and Badges
  2. Android下的动画
  3. Python 2.7 学习笔记 内置语句、函数、标准库
  4. iOS开发网络篇—数据缓存
  5. 数学--数论--康托展开与逆康托展开
  6. 如何制作印章_用Word也能做出逼真的电子印章!简单3步!1分钟搞定
  7. 筛选平台数据包丢弃_高并发电商平台设计
  8. iOS活动倒计时的两种实现方式
  9. 职业人应该“这山望着那山高”
  10. 【白皮书分享】2020胡润大健康白皮书-胡润百富.pdf(附下载链接)
  11. rc6 java_NativeScript Telerik UI RC6
  12. oracle采购业务流程,ORACLE ERP订单到现金流程图解
  13. 冒险者传说pc6java_我的世界之冒险者传说整合包游戏
  14. VMware Fusion CentOS7 下载安装及手动配置静态IP
  15. 新手练字又快又好的方法
  16. 教程向 | 安装 地表最强IDE---Microsoft Visual Studio 2022
  17. 批处理 b站视频批量合并
  18. 【Unity3D日常开发】Unity3D中设置Image中的Color的值
  19. 知识付费系统源码下载带课程数据+一键同步功能和更新设置
  20. ORACLE函数库大全

热门文章

  1. android JSONObject的使用
  2. android jni jbyteArray转char*
  3. WebKit 布局的标准和概念
  4. from torch._C import * ImportError: DLL load failed解决方法
  5. Git新建分支出现fatal: Not a valid object name: ‘master‘错误
  6. 应急模拟系统功能结构图
  7. android四个组件的跨进程通信
  8. STM32的备份寄存器测试
  9. (原创)机器学习之numpy库中常用的函数介绍(一)
  10. linux消息队列的使用