Spring学习

Spring 的核心是个轻量级(Lightweight)的容器(Container),它是实现IoCInversion of Control)容器非侵入性(No intrusive)的框架,并提供AOPAspect-oriented programming概念的实现方式,提供对持久层(Persistence)、事务(Transaction)的支持,提供MVC Web 框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装,是一个全方位的应用程序框架(Application framework),除此之外,对于现存的各种框架(Struts、JSF、Hibernate 等),Spring 也提供了与它们相整合的方案。

本质上讲,Spring是IOC(Inversion of Control)和面向切面编程(AOP)的组合体。它是一个非侵入式的框架,增强了POJO的功能。从服务上讲(With a service abstraction),它将程序代码从J2EE环境解耦到普通的java对象(自然,这些代码可以脱离J2EE而在多种环境中运行)。它还在很多功能上提供了除EJB之外的选择――比如为所有的POJO提供声明式事务。Spring被广泛运用到很多项目中,从小的web程序到大的企业应用程序。

Spring 框架的核心基于“控制反转(Inversionof Control,IoC)”原理。IoC是一种将组件依赖关系的创建和管理置于程序外部的技术。假设一个例子,类Foo 依赖于类Bar 的一个实例来进行某些操作。传统的方式,Foo 使用new 操作符创建一个Bar 的实例,或者通过某种工厂类来获得。使用IoC 方法,Bar 的一个实例(或者其子类的实例)是通过某些外部处理过程在运行时动态传递给Foo 的。这种在运行时注入依赖的行为方式,使得IoC 后来被改称为另一个含义更明确的名字:“依赖注入(Dependency Injection ,DI)”。

Spring 的DI 实现是基于两个Java 核心概念:JavaBean 和Interface。当你使用DI 的时候,你可以使得依赖配置与你的代码保持隔离。JavaBeans 提供了一种创建Java 资源的标准方法,并且这些资源是可以通过标准方式配置的。

面向切面编程

AOP 提供了实现横切逻辑的功能——这一逻辑应用于你应用程序的很多地方,只需要编写一次,就可以把这一逻辑自动在整个应用中实施目前有两种主流的AOP实现。静态AOP,比如AspectJ(www.apsectj.org),提供了编译器的方法来构建基于AOP的逻辑,并把它加入到应用程序中。动态AOP,比如Spring中的这样,允许在运行时把横切逻辑应用到任意一段代码中。两种不同的AOP方法都有其适用面,实际上,AOP提供了与AspectJ整合的功能。

依赖注入分为三种,设值方法注入、构造器注入和接口注入。Spring支持前两种。


你可能感兴趣的:(spring)