入门 01 - 简介 Spring
Spring是轻量级的J2EE应用程序框架。
Spring的核心是个轻量级容器(container),实现了IoC(Inversion of Control)模式的容器,Spring的目标是实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间彼此可以独立,也可以使用其它的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案
Spring不会特别去提出一些子框架来与现有的OpenSource框架竞争,除非它觉得所提出的框架够新够好,例如Spring有自己的 MVC框架方案,因为它觉得现有的MVC方案有很多可以改进的地方,但它不强迫您使用它提供的方案,您可以选用您所希望的框架来取代其子框架,例如您仍可以在Spring中整合您的Struts框架。
Spring的核心概念是IoC,IoC的抽象概念是「依赖关系的转移」,像是「高层模块不应该依赖低层模块,而是模块都必须依赖于抽象」是IoC的一 种表现,「实现必须依赖抽象,而不是抽象依赖实现」也是IoC的一种表现,「应用程序不应依赖于容器,而是容器服务于应用程序」也是IoC的一种表现。
IoC的概念与三种DI(Dependency Injection)类型在Martin Fowler的Inversion of Control Containers and the Dependency Injection pattern中得到清楚的阐释,您可以先在以下的网址中了解IoC与DI的详细说明:
http://www.martinfowler.com/articles/injection.html
您也可以先看看这些文章,了解一下Dependency Inversion:
http://www.objectmentor.com/publications/dip.pdf
Spring的核心即是个IoC/DI的容器,它可以帮程序设计人员完成组件(类别们)之间的依赖关系注入(连结),使得组件(类别们)之间的依赖达到 最小,进而提高组件的重用性,Spring是个低侵入性(invasive)的框架,Spring中的组件并不会意识到它正置身于Spring中,这使得组件可以轻易的从框架中脱离,而几乎不用任何的修改,反过来说,组件也可以简单的方式加入至框架中,使得组件甚至框架的整合变得容易。
Spring最为人重视的另一方面是支持AOP(Aspect-Oriented Programming),然而AOP框架只是Spring支持的一个子框架,说Spring框架是AOP框架并不是一件适当的描述,人们对于新奇的 AOP关注映射至Spring上,使得人们对于Spring的关注集中在它的AOP框架上,虽然有所误解,但也突显了Spring的另一个令人关注的特 色。
Spring也提供MVC Web框架的解决方案,但您也可以将自己所熟悉的MVC Web框架与Spring解合,像是Struts、Webwork等等,都可以与Spring整合而成为适用于自己的解决方案。
Spring也提供其它方面的整合,像是持久层的整合如JDBC、O/R Mapping工具(Hibernate、iBATIS)、事务处理等等,Spring作了对多方面整合的努力,故说Spring是个全方位的应用程序框架。
想要入门Spring,对于IoC/D I的了解是必要的,上面的两个网址是个好的开始,另外您也可以先看看「Spring开发指南」:
http://www.xiaxin.net/Spring_Dev_Guide.rar
如果您想了解Spring的整体观念,可以看看Expert One on one J2EE Development Without EJB这本书,Spring的前身是由该作者的前一本书Expert One on one J2EE Design and Development中的一个实际程序开始,Spring本身是J2EE的一个轻量级容器解决方案,从这本书了解J2EE程序设计的考量也是个不错的基础建构方式。
当然,如果您时间有限,想直接了解Spring,可以从这篇文章开始:
http://javaboutique.internet.com/tutorials/spring_frame/
对于Expert One on one J2EE Development Without EJB这本书,如果您想了解Spring,可以看chapter 7、chapter 13。
其它的参考文章,可以看看这个分区的「Spring」资料中的连结。
分享到:
相关推荐
Spring 框架是Java开发领域中的一个核心框架,它主要设计目的是为了简化企业级应用的复杂性。Spring 自从2003年发布以来,因其强大的功能和灵活性,已经成为了许多开发者的首选。本节将详细介绍Spring的基本概念、...
Licence GitHub Release 简介 Spring Boot API Project Seed
解析spring-boot-starter-parent简介 spring-boot-starter-parent是Spring Boot框架中的一个基础依赖项管理工具,主要用于管理项目中的依赖项版本。通过继承spring-boot-dependencies,spring-boot-starter-parent...
一篇很好的springCloud学习的思维导读,...SpringCloud Alibaba入门简介 SpringCloud Alibaba Nacos 服务注册和配置中心 SpringCloud Alibaba Sentinel 实现熔断与限流 SpringCloud Alibaba Seata 处理分布式事务
### 一、Spring框架简介 Spring是一个开源的轻量级Java应用开发框架,它最初由Rod Johnson创建,并由Pivotal Software维护。Spring框架的主要目标是简化企业级应用程序的开发过程,提高开发效率和降低复杂度。...
### Spring框架简介 Spring框架是一个开源的企业级Java应用程序框架,由Rod Johnson创建,现由Pivotal软件公司支持。Spring框架最初是为了简化企业应用开发而设计的,它提供了一种轻量级的方式来管理依赖注入...
### Spring MVC框架简介 Spring MVC 是一款基于 Java 的 Web 应用框架,它遵循 MVC(Model-View-Controller)设计模式。Spring MVC 提供了一种结构化的开发方式,旨在简化 Web 层的开发过程,同时提供了高度灵活性...
#### 二、Spring DM框架简介 Spring DM框架是Spring框架的一个扩展,它支持基于OSGi规范的应用程序开发。Spring DM不仅充分利用了Spring框架的强大功能,还实现了与OSGi规范的高度集成,使得开发者可以在OSGi环境下...
#### 一、Spring框架简介 Spring框架是目前最流行的Java企业级开发框架之一,它提供了一整套轻量级的解决方案,旨在简化企业级应用的开发。Spring的核心功能包括依赖注入(Dependency Injection, DI)、面向切面编程...
### Spring框架简介 Spring框架最初由Rod Johnson创建,于2004年首次发布。它是一个轻量级的Java应用开发框架,旨在简化企业级应用的开发过程。Spring框架的核心特性包括依赖注入(Dependency Injection, DI)、...
Spring框架简介 Spring框架是一个开源的Java平台,用于构建企业级应用程序。它提供了一种简洁的方式来管理组件、事务处理、数据访问以及与各种第三方库集成。Spring的核心功能包括依赖注入(DI)、面向切面编程...
一、SpringSession简介 SpringSession是一个开源项目,它扩展了Spring MVC和Spring WebFlux,以支持基于Redis、MongoDB、Hazelcast等多种存储机制的Session共享。通过将Session数据存储在外部存储中,而不是依赖于...
一、Spring Cloud简介 Spring Cloud是一系列框架的集合,它为开发者在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)操作中提供了...
一、Spring框架简介 Spring是一个开源的Java应用程序框架,它简化了开发过程,通过依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)提供了强大的功能。Spring的核心理念是...
##### Spring Boot简介 Spring Boot 是一款基于 Spring 架构的全新框架,它极大地简化了基于 Spring 的应用开发。Spring Boot 旨在提供快速应用开发所需的“一站式”解决方案。其目标是简化新Spring应用的初始搭建...
#### 二、Spring Integration简介 Spring Integration是Spring家族中的一个子项目,它提供了一种基于消息传递的方式来实现应用程序之间的集成。该框架的核心设计理念之一是将复杂的应用程序集成问题拆解成一系列...
### Spring与Flex整合知识点 #### 一、Spring BlazeDS Integration 概览 ##### 1.1 背景 Spring框架一直以来都致力于成为一个对客户端技术无偏见的平台,允许各种客户端技术接入其核心服务,并根据社区的需求来...