从本文開始,我们就要一起学习Spring框架,首先不得不说Spring框架是一个优秀的开源框架。

当中採用IoC原理实现的基于Java Beans的配置管理和AOP的思想都是非常值得学习与使用的。以下我们就进入正题。介绍Java平台上的一个优秀的开源应用框架Spring,以及Spring框架的历史和Spring框架相关基本知识。

【转载使用,请注明出处:http://blog.csdn.net/mahoking



Spring 介绍

Spring是Java平台上的一个开源应用框架。

它的第一个版本号是由Rod Johnson写出来的。Rod在他的“Expert One-On- One Java EE Design and Development(Java企业应用设计与开发的专家一对一)”一书中首次公布了这个框架。

Rod进一步拓展了他的代码。以阐述“怎样让应用程序能以超出当时大众所惯于接受的易用性和稳定性与J2EE平台上的不同组件合作”的观点。

Spring的框架首次在2003年6月的Apache 2.0的使用许可中公布。第一个具有里程碑意义的版本号是2004年3月公布的1.0。2004年9月和2005年3月先后又有重要的版本号面世。

       Spring 框架本身并没有强制实行不论什么特别的编程模式。在Java社区里,Spring作为EJB模型之外的另外一个选择甚至是替代品而广为流行。从设计上看,Spring给予了Java程序猿很多的自由度,但同一时候对业界常见的问题也提供了良好的文档和易于使用的方法。

       Spring框架的核心功能在不论什么Java应用中都是适用的。在基于Java企业平台上的web应用中,大量的拓展和改进得以形成。为此,Spring获得了广泛的欢迎,并被很多公司认可为具有战略意义的重要框架。





Spring框架的主要功能 

  • 基于Java Beans的配置管理,採用IOC的原理,特别是对依赖注射技术的使用。这些都用来降低各组件间对实施细则的相互依赖性。
  • 一个核心的,全局适用的bean工厂 。

  • 一个一般抽象化的层面来管理数据库间的数据处理。
  • 建立在框架内的,对Java数据处理API和单独的JDBC数据源的一般性策略。

    因此,在数据处理支持上对Java企业版本号环境的依赖性得以消除。

  • 和一些可持续性的框架,如Hibernate,JDO,iBATIS和db4o的整合 。

  • web应用中的MVC框架。基于核心的Spring功能。支持多种产生视图的技术。包含JSP,FreeMarker,Velocity。Tiles,iText,和POI 。

  • 大量的AOP框架以提供诸如数据处理管理的服务。同IOC的功能一样,目的是提高系统的模块化程度。

Spring框架涉及的相关概念

       Spring使用主要的JavaBean来完毕曾经仅仅可能由EJB完毕的事情。然而,Spring的用途不仅限于server端的开发。从简单性、可測试性和松耦合的角度而言,不论什么Java应用都能够从Spring中受益。

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

       轻量——从大小与开销双方面而言Spring都是轻量的。

完整的Spring框架能够在一个大小仅仅有1MB多的JAR文件中公布。而且Spring所需的处理开销也是微不足道的。此外。Spring是非侵入式的:典型地。Spring应用中的对象不依赖于Spring的特定类。

       控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。

当应用了IoC,一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你能够觉得IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

       面向切面——Spring提供了面向切面编程的丰富支持,同意通过分离应用的业务逻辑与系统级服务(比如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象仅仅实现它们应该做的——完毕业务逻辑——仅此而已。

它们并不负责(甚至是意识)其他的系统级关注点,比如日志或事务支持。

       容器——Spring包括并管理应用对象的配置和生命周期。在这个意义上它是一种容器,你能够配置你的每一个bean怎样被创建——基于一个可配置原型(prototype),你的bean能够创建一个单独的实例或者每次须要时都生成一个新的实例——以及它们是怎样相互关联的。然而。Spring不应该被混同于传统的重量级的EJB容器,它们常常是庞大与笨重的,难以使用。

       框架——Spring能够将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合。典型地是在一个XML文件中。

Spring也提供了非常多基础功能(事务管理、持久化框架集成等等)。将应用逻辑的开发留给了开发人员。

       全部Spring的这些特征使你可以编写更干净、更可管理、而且更易于測试的代码。它们也为Spring中的各种模块提供了基础支持。

Spring 框架的七个模块

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

 

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

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

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

Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,能够非常easy地使 Spring 框架管理的不论什么对象支持 AOP。

Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就能够将声明性事务管理集成到应用程序中。

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

       Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,当中包含 JDO、Hibernate 和 iBatis SQL Map。

全部这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

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

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

Spring 框架的功能能够用在不论什么 J2EE server中,大多数功能也适用于不受管理的环境。

Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据訪问对象。毫无疑问,这种对象能够在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、測试环境之间重用。

【转载使用,请注明出处:http://blog.csdn.net/mahoking

Spring学习【Spring概述】的更多相关文章

  1. [原创]java WEB学习笔记109:Spring学习---spring中事物管理

    博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好 ...

  2. Spring 学习——Spring框架结构、概念

    maven项目结构 记忆:在一个项目中,project下一层级时src,也就是源文件,所有需要进行编译的文件都是在这个目录下,其实也就是这一个目录,然后向下扩展.在src目录下,存在main文件夹,里 ...

  3. 【转】Spring学习---Spring 学习总结

    什么是Spring ? Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson在其著作Expert One-On-One J2EEDev ...

  4. 【转】Spring学习---Spring IoC容器的核心原理

    [原文] Spring的两个核心概念:IoC和AOP的雏形,Spring的历史变迁和如今的生态帝国. IoC和DI的基本概念 IoC(控制反转,英文含义:Inverse of Control)是Spr ...

  5. [原创]java WEB学习笔记109:Spring学习---spring对JDBC的支持:使用 JdbcTemplate 查询数据库,简化 JDBC 模板查询,在 JDBC 模板中使用具名参数两种实现

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. [原创]java WEB学习笔记102:Spring学习---Spring Bean配置:bean配置方式(工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean) 全类名

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. [原创]java WEB学习笔记101:Spring学习---Spring Bean配置:IOC容器中bean的声明周期,Bean 后置处理器

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. [原创]java WEB学习笔记100:Spring学习---Spring Bean配置:SpEL详细介绍及代码演示

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  10. [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

随机推荐

  1. javascript学习笔记 - 引用类型 单体内置对象

    七 单体内置对象 1.Global对象 不属于任何对象的属性和方法,都归于它.全局作用域中定义的变量.函数,都属于Global对象 1.1 URI编码  encodeURI <=>deco ...

  2. [leetcode] permutations 排列

    写了两个,一个是直接的递归实现: class Solution { public: void swap(vector<int> &num,int left,int right) { ...

  3. 我的logging 配置

    #encoding=utf-8 import logging.config logging.config.dictConfig({ 'version': 1, 'disable_existing_lo ...

  4. Scrapy学习-13-使用DownloaderMiddleware设置IP代理池及IP变换

    设置IP代理池及IP变换方案 方案一: 使用国内免费的IP代理 http://www.xicidaili.com # 创建一个tools文件夹,新建一个py文件,用于获取代理IP和PORT from ...

  5. AC日记——Weird Rounding Codeforces 779b

    B. Weird Rounding time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  6. AC日记——[网络流24题]骑士共存 cogs 746

    746. [网络流24题] 骑士共存 ★★☆   输入文件:knight.in   输出文件:knight.out   简单对比时间限制:1 s   内存限制:128 MB 骑士共存问题 «问题描述: ...

  7. Codeforces 932 C.Permutation Cycle-数学 (ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined))

    C. Permutation Cycle   time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  8. 如何轻松的把图片导入execl表格中

    在项目中有时候会遇到往数据库中导数据的时候,往往需要把图片也一起导入execl表格中,那怎么才能把图片一块导入至execl中呢?那么今天我们就来看看怎么实现吧! 如何实现?今天我们就来用jxl和poi ...

  9. [功能集锦] 001 - java下载文件

    @RequestMapping("/downloadxls.action") public void downloadxls(HttpServletRequest request, ...

  10. 老哥你真的知道ArrayList#sublist的正确用法么

    我们有这么一个场景,给你一个列表,可以动态的新增,但是最终要求列表升序,要求长度小于20,可以怎么做? 这个还不简单,几行代码就可以了 public List<Integer> trimL ...