您的位置:首页 > 编程语言 > Java开发

浅谈spring

2009-01-14 22:16 120 查看
一、基本概念
Spring的核心是轻量级(Lightweight)的容器(Container),它实现了IoC容器、非侵入性(No intrusive)的框架,并提供AOP概念的实现方式,提供对持久层(Persistence)、事务(Transaction)的支持,提供MVC Web框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装,是一个全方位的应用程序框架(Application framework),另外,Spring也提供了对现有框架(Struts、JSF、Hibernate等)的整合方案。

 

Spring旨在分离体系结构的层次,因此每一层都可以修改而不会影响到其它层。每一层都不知道其上层的关注点;就其可能而言,只对所紧挨的下一层有依赖。层与层之间的依赖通常是以接口的形式表现,以确保其耦合尽可能松散。
容器管理事务,容器,贯穿始终:1、对象生命周期的管理。  2、容器本身具备功能,加在自己的类中。需要自己调用则为显示调用。 而尽量用容器隐式调用,Spring即为隐式调用、声明式编程。
Spring轻量级容器体现在:只需设置一个Jar文件到CLASSPATH,不用去调用它,但又可以拥有其强大的功能。组件的极大程度的复用。
让层与层中耦合度低——Loosely-Coupled    工厂类创建DAO对象。
声明式编程。在xml文件中声明。 基于POJO类,支持事务,事务是根本;而EJB事务由Container管理。
Spring将 View层与持久层,比如与Hibernate 联系起来。Spring简化Hibernate 的使用,还可以帮助管理Hibernate。Spring本身没有O-R_mapping,因为有Hibernate,她已经做得很好了。
Spring将编译时异常(checked)转化为运行时异常(runtime)。比如,JDBC 则为编译时异常,即必须写try…catch;而Hibernate程序为运行时异常。
在spring-framework-2.0.5/dist 目录下 有jar文件、 dtd文件、 tld文件。
总之,Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实现Java EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其它流行的Web框架进行集成。
 
二、IoC(Inversion of Control
1、定义:组件之间的依赖关系由容器在运行时决定。

例如:B对象所依赖的A对象是由 Spring创建好并且通过Set方法传递注入过的。
最基本的优点体现在:若A为接口,让B依赖于接口。只看接口不管实现类。
可把工厂类全部替换掉。对象均为容器创建。到时还能把容器的功能融入到中。
         IoC要求:容器尽量不要侵入到应用程序中去,应用程序本身可以依赖于抽象的接口,容器根据这些接口所需要的资源注入到应用程序中,也就是说应用程序不会主动向容器请求资源;容器会自动把这些对象给应用程序。
         IoC有基于Set方式的注入(property)、 基于构造方法的注入。
         IoC核心:bean工厂。在Spring中,bean工厂创建的各个实例称作bean。业务组件间的依赖是容器(Bean工厂)解决的。BeanFactory负责读取Bean定义文件,管理对象的加载、生成,维护Bean对象与Bean对象的依赖关系,负责Bean的生命周期,对于简单的应用程序来说,使用BeanFactory就已经足够来管理Bean,在对象的管理上就可以获得许多的便利性。
         Spring中有两个包里的类都可以做IoC:
beans包:org.springframework.beans包;
context包:org.springframework.context包 其类功能更加强大。
 
2、bean工厂创建bean的三种方式:
²        通过构造方法直接创建:
<bean id=”  ” class=”bean class name”>
²        通过静态工厂方法创建:
<bean id=”  ” class=”factory class name”  factory-method=””>
²        通过非静态工厂方法创建:
<bean id=”factory” class=”factory class name”>
<bean id=”” factory-bean=” factory” factory-method=””>
 
3、Spring中实现IoC的方式:依赖注入(Dependency Injection)
Spring中依赖注入的两种方式:
Ø         通过setter方法注入:
<property name=” ”> </property>
其中,name属性的取值依setter方法名而定。Spring推荐使用setter方法注入
Ø         通过构造方法注入:
     <constructor-arg index=”0”></ constructor-arg>
     <constructor-arg type=”int”></ constructor-arg>
    其中,index表示构造方法中的参数索引(第一个参数索引为0),type表示构造方法中参数的类型。
l         两种注入方式的区别:
n       Constructor: 可以在构建对象的同时,把依赖关系也构建好。对象创建后好就已经准备好了所有的资源,安全性高。
n       Setter: 创建完对象之后再通过set()方法进行属性的设定。
 
4、设置属性时可选的标签:
value:基本类型(包装类型)或String类型
ref:引用工厂中其它的bean
list:List或数组类型
set:Set类型。用法与list类似。
map:Map类型
props:Properties类型,键值为String类型的,所以直接写值。
 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息