Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 对于入门Spring的初学者而言,以下的说明可以让您对这些术语与概念有个基本的认识。
  1)轻量级(Lightwight):
轻量级的形容是相对于一些重量级的容器(如EJB容器)来说的,Spring的核心包在文件容量上只有不到1MB的大小,而使用Spring核心包所需要的资源负担也是很小的,您甚至可以在小型设备中使用Spring的核心包。
  2)非侵入性(No intrusive)
框架原来的用意是提供一个架构的实现,让开发人员可以在基于框架的基础上,快速地开发出遵循架构的所需的应用程序,然而有些框架一旦被使用,应用程序就与框架发生了依赖,例如大量使用了框架的API,或直接继承API的某些类型等,都会使应用程序组件与框架发生依赖,而无法从框架中独立出来,更别说当中的组件可以直接重用到另一个应用程序之中。
Spring的目标之一是实现非侵入性框架,希望让应用程序几乎感受不到框架的存在,减低应用程序在框架移植时的负担,进一步增强应用程序组件的可重用性,简单地说,使用Spring的话,应用程序中某些组件可以直接拿到另一个应用程序或框架之中直接使用。
  3)容器(Container)
Spring提供容器功能,容器可以管理对象的生命周期,对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称,如何产生 (Prototype方式或Singleton方式),那个对象产生之后必须设定成为某个对象的属性等,在启动容器后,所有的对象都可以直接取用,不用编写任何一行代码来产生对象,或是建立对象与对象之间的依赖关系。
换个更直白点的说明方式:容器是一个Java所编写的程序,原先必须自行编写程序以管理对象关系,现在容器都会自动帮您做好。
  4)Ioc(Inversion of Control)
Spring最重要的核心概念是Inversion of Control,中文常翻译为“控制反转”,更具体的另一个名词是Dependency Injection,中文常翻译为“依赖注入”。使用Spring,您不必自己在程序代码中维护对象的依赖关系,只需要在配置文件中加入设定,Spring核心容器会自动根据配置将依赖注入指定的对象。
通常使用英文Ioc,而翻译为 依赖注入。
  5)AOP(Aspect-oriented programming)
Spring最被人重视的另一方面是支持AOP的实现,然而AOP框架只是Spring支持的一个子框架,说Spring框架是AOP框架并不是一个适当的描述,人们对于AOP的关注反映至Spring上,使得人们对于Spring的关注集中在它的AOP框架上,虽然所有误解,但也突现了Spring的另一个令人关注的特色。
举个实际的例子来说明AOP的功能之一,假设您有个日志(Logging)的需求,您可以无须修改任何一行程序代码,就可以将这个需求加入至原先的应用程序之中,而若您愿意,也可以在不修改任何程序的情况下,将这个日志的功能移除。
Spring的Ioc容器功能与AOP功能的实现是其重心所在,在Spring下实现了持久层,MVC Web框架以及各种企业服务的API封装,他们的实现有些倚重于Spring的Ioc容器与AOP功能,Sping的这些框架或封装的API功能彼此可以独立,也可以结合其它的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案。
  6)持久层
Spring提供对持久层的整合,如对JDBC的使用加以封装与简化,提供事物(Transaction)管理功能,对于O/R Mapping工具(Hibernate,IBATIS)的整合,Spring也提供了解决的方案。
  7)Web框架
Spring也提供MVC Web框架的解决方案,使用Spring Web框架的好处是可以善用Ioc与AOP的功能,您甚至可以轻松地替换使用不同的View层技术,例如使用JSP,结合Tiles,使用PDF作为展现给使用者的画面技术。
也可以将自己熟悉的Web框架与Spring整合,例如Struts,JSF等,都可以与Spring整合,而适用于当前所进行的应用程序。
  8)其它企业服务的封装
对于一些服务,例如JNDI,Mail,任务计划(Scheduling),远程(Remoting)等,Spring不直接提供实现,而是采取抽象层方式对这些业务进行封装,让这些服务在使用时可以有一致的使用模型,并且在使用上更为简化。

spring开发基础的更多相关文章

  1. [Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.

    前言: 在上一篇中: [Spring框架]Spring AOP基础入门总结一. 中 我们已经知道了一个Spring AOP程序是如何开发的, 在这里呢我们将基于AspectJ来进行AOP 的总结和学习 ...

  2. 今天介绍一下自己的开源项目,一款以spring cloud alibaba为核心的微服务架构项目,为给企业与个人提供一个零开发基础的微服务架构。

    LaoCat-Spring-Cloud-Scaffold 一款以spring cloud alibab 为核心的微服务框架,主要目标为了提升自己的相关技术,也为了给企业与个人提供一个零开发基础的微服务 ...

  3. JavaEE开发基础

    1 JavaEE简介 Java平台有三个版本,分别是JavaSE(Java Platform, Standard Edition),JavaEE(Java Platform, Enterprise E ...

  4. [Spring框架]Spring AOP基础入门总结一.

    前言:前面已经有两篇文章讲了Spring IOC/DI 以及 使用xml和注解两种方法开发的案例, 下面就来梳理一下Spring的另一核心AOP. 一, 什么是AOP 在软件业,AOP为Aspect ...

  5. 使用Spring开发第一个HelloWorld应用

    http://www.importnew.com/13246.html 让我们用Spring来写第一个应用程序吧. 完成这一章要求: 熟悉Java语言 设置好Spring的环境 熟悉简单的Eclips ...

  6. [置顶] 提高生产力:Web开发基础平台WebCommon的设计和实现

    Web开发中,存在着各种各样的重复性的工作.为了提高开发效率,不在当码农,我在思考和实践如何搭建一个Web开发的基础平台. Web开发基础平台的目标和功能 1.提供一套基础的开发环境,整合了常用的框架 ...

  7. Spring Boot 基础

    Spring Boot 基础 Spring Boot 项目(参考1) 提供了一个类似ASP.NET MVC的默认模板一样的标准样板,直接集成了一系列的组件并使用了默认的配置.使用Spring Boot ...

  8. Spring Boot 基础教程系列学习文档

    Spring Boot基础教程1-Spring Tool Suite工具的安装 Spring Boot基础教程2-RESTfull API简单项目的快速搭建 Spring Boot基础教程3-配置文件 ...

  9. Java Web系列:Spring Security 基础

    Spring Security虽然比JAAS进步很大,但还是先天不足,达不到ASP.NET中的认证和授权的方便快捷.这里演示登录.注销.记住我的常规功能,认证上自定义提供程序避免对数据库的依赖,授权上 ...

随机推荐

  1. JSP中使用cookie存储中文

    今天看J2EE的时候,看见书上讲到使用cookie保存信息的时,看到书上举得例子都是英文的键值对,我就想中文是不是一样呢?试了一下果然不一样.废话不多说,直接上代码: 比如说有addCookie.js ...

  2. 彻底明白Java的IO系统

    java学习:彻底明白Java的IO系统 文章来源:互联网 一. Input和Output1. stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源.在Java的IO中,所有 ...

  3. Websense一面、二面及Offer

    1.  写脚本打印当前目录(子目录)下文件内容中包含abc字符串文件 2.  用C写一个管道通信的程序:父进程向子进程写一个”hello word”字符串,子进程输出. 3.  解释I-node. 4 ...

  4. 复合文档的二进制存储格式研究[ole存储结构](word,xls,ppt...)[转]

    复合文档文件格式研究   前 言 复合文档(Compound Document) 是一种不仅包含文本而且包括图形.电子表格数据.声音.视频图象以及其它信息的文档.可以把复合文档想象成一个所有者,它装着 ...

  5. SRM 223 Div II Level Two: BlackAndRed,O(N)复杂度

    题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=3457&rd=5869 解答分析:http://comm ...

  6. asp.net2.0安全性(1)--用户角色篇(代码实现1)--转载来自车老师

    创建用户: MembershipCreateStatus mc; Membership.CreateUser(txtUid.Text, txtPwd.Text, txtEmail.Text, txtQ ...

  7. C#、WinForm、ASP.NET - SQLHelper.cs

    SQLHelper.cs using System; using System.Data; using System.Configuration; using System.Data.SqlClien ...

  8. Eclipse和PyDev搭建完美Python开发环境(Windows篇)(转)

      摘要:本文讲解了用Eclipse和PyDev搭建Python的开发环境. 十一长假在家闲着没事儿,准备花点时间学习一下Python. 今儿花了一个下午搭建Python的开发环境,不禁感叹————开 ...

  9. Unknown database 'DB_NAME'

    Cannot create PoolableConnectionFactory (Unknown database 'DB_NAME'): com.mysql.jdbc.exceptions.jdbc ...

  10. ZOJ 1542 POJ 1861 Network 网络 最小生成树,求最长边,Kruskal算法

    题目连接:problemId=542" target="_blank">ZOJ 1542 POJ 1861 Network 网络 Network Time Limi ...