浅谈spring

一、基本概念

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

 

Spring旨在分离体系结构的层次,因此每一层都可以修改而不会影响到其它层。每一层都不知道其上层的关注点;就其可能而言,只对所紧挨的下一层有依赖。层与层之间的依赖通常是以接口的形式表现,以确保其耦合尽可能松散。

容器管理事务,容器,贯穿始终:1、对象生命周期的管理。  2、容器本身具备功能,加在自己的类中。需要自己调用则为显示调用。 而尽量用容器隐式调用,Spring即为隐式调用、声明式编程。

Spring轻量级容器体现在:只需设置一个Jar文件到CLASSPATH,不用去调用它,但又可以拥有其强大的功能。组件的极大程度的复用。

让层与层中耦合度低——Loosely-Coupled    工厂类创建DAO对象。

声明式编程。在xml文件中声明。 基于POJO支持事务事务是根本EJB事务由Container管理。

Spring View层与持久层比如与Hibernate 联系起来。Spring简化Hibernate 的使用,还可以帮助管理HibernateSpring本身没有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),用以构造我们所需要的MModel)。在此基础之上,Spring提供了AOPAspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实现Java EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVCSpring Web提供了Java Web应用的框架或与其它流行的Web框架进行集成。

 

二、IoCInversion 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

beansorg.springframework.beans

contextorg.springframework.context包 其类功能更加强大。

 

2bean工厂创建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=””>

 

3Spring中实现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

listList或数组类型

setSet类型。用法与list类似。

mapMap类型

propsProperties类型,键值为String类型的,所以直接写值。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值