您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Spring_从入门到精通
Spring轻量级容器框架Spring简介Spring是一个控制反转(Ioc)和面向切面编程(AOP)的轻量级的容器,为软件开发提供全方位支持的应用程序框架。控制反转(InversionofControl,IoC)与依赖注入(DependencyInjection,DI)。由容器来管理对象之间的依赖关系(而不是对象本身来管理),就叫“控制反转”或“依赖注入”.控制反转应用本身不负责依赖对象的创建和维护,而是由外部容器来负责。这样控制权就由应用转移到外部容器,控制权的转移就是所谓的反转。容器是符合某种规范能够提供一系列服务的管理器,开发人员可以利用容器所提供的服务来方便地实现某些特殊的功能。所谓的“重量级”容器是指那些完全遵守J2EE的规范,提供规范中所有的服务。EJB就是典型的例子。“轻量级”容器的也是遵守J2EE的规范,但其中的服务可以自由配置。Spring最常用的特性利用Spring来创建对象(JavaBean工厂)利用Spring构建业务逻辑层管理依赖关系适应需求变更利用Spring创建数据访问对象(DAO)利用Spring进行事务处理Spring的安装下载并解压将相应的jar包加入类路径spring.jar配置SpringApplicationContext.xmlIoC/DI控制反转(InversionofControl,IoC)与依赖注入(DependencyInjection,DI)。由容器来管理对象之间的依赖关系(而不是对象本身来管理),就叫“控制反转”或“依赖注入”前面的例子,已清楚阐述IoC/DI出现的原因,以及IoC的基本原理:抽象不依赖于现实,而是现实依赖于抽象。Spring框架的基本思想就是IoC/DI,Spring就是一个IoC容器IoC与DI,说的是一回事,但DI这个名词更能表达这种设计模式的思想Spring架构依赖注入的类型构造器注入通过类的构造方法注入依赖关系使用constructor-arg元素设值方法注入通过类的setter方法注入依赖关系使用property元素依赖注入的配置注入基本数据类型,字符串等。在property或constructor-arg元素中使用value在property或constructor-arg元素中加上value属性注入依赖对象在property或constructor-arg元素中使用ref在property或constructor-arg元素中加上ref属性注入null值如果使用value/value这种形式,Spring是作为空字符串来对待的。可以使用null表示null值内部Bean,在property或constructor-arg元素中使用bean元素再定义一个Bean内部Bean的scope、id、name属性会被忽略内部Bean总是prototype(原型)模式内部Bean不能在包含该内部Bean的Bean之外依赖注入的配置注入集合通过list、set、map、props配置与JavaCollection类型对应List、Set、Map、Propertiespropertyname=“lists”listvalue/valueref//list/propertypropertyname=“maps”mapentrykeyvalue/value/keyvalue/value/entry/map/propertypropertyname=“sets”setvalue/valueref//set/propertypropertyname=“emails”propspropkey=“support”support@fendoujiaoyu.com/prop/props/propertyBean的依赖模式1用ref属性指定依赖。local模式Bean与被参考引用的Bean在同一个XML文件中,而且被参考应用的Bean是指定id属性。Spring的XML解析器会在解析时匹配,如果没有匹配的元素,XML解析器会产生一个错误。propertyname=bookreflocal=book1//propertyBean的依赖模式2bean模式(可找id,也可找name命名的别名)beanid=book1name=book2class=com.BookBean与被参考引用的Bean可以在不同的XML文件中。ApplicationContextcontext=newClassPathXmlApplicationContext(newString[]{beans1.xml,beans2.xml});bean-dao.xmlbean-po.xmlbean-service.xmlbean-….xmlBean的依赖模式3parent模式,表示被参考引用的Bean可以是当前BeanFactory或ApplicationContext的父BeanFactory或ApplicationContext中的Bean。表示继承的父类如果有很多继承同一个父类的BEAN那么在配置文件中实例那些BEAN时候可以省略掉父类已经注入的属性bean定义继承父bean定义,它可以覆盖父bean的一些值,或者它需要的值。三种实例化Bean的方式使用类构造器实例化,也就是没有参数的构造函数来建立Bean的实例beanid=sampleclass=com.fendou.service.impl.SampleImpl/使用静态工厂方法实例化publicPersonFactory{publicstaticPersongetPerson(){returnnewPerson();}}beanid=person2class=com.spring.bean.PersonFactoryfactory-method=getPerson/bean使用实例工厂方法实例化beanid=“sampleFactoryclass=com.fendou.service.impl.SampleFactory“beanid=sample3factory-bean=“sampleFactory”factory-method=“createSample”/Bean的作用域Singleton。在Spring中取得的实例被默认为Singleton(单例)beanid=“sample”class=“com.fendou.service.impl.SampleImpl“scope=“singleton”/beanid=“sample”class=“com.fendou.service.impl.SampleImpl“singleton=“true”/Prototype。在每次对该bean请求时创建出一个新的bean对象(原型)beanid=“sample”class=“com.fendou.service.impl.SampleImpl“scope=“prototype”/其他作用域:request、session、globalsession延迟初始化Bean默认的情况下在容器启动时会初始化Bean。但可以通过指定bean元素中的lazy-init属性来延迟初始化Bean,这样将会在第一次获取Bean的时候初始化Beanbeanid=sampleclass=com.fendou.service.impl.SampleImpl“lazy-init=“true”/如果想对所有的Bean都延迟初始化,可以修改beans元素beansdefault-lazy-init=“true”Bean的生命周期Bean的生命周期包括:Bean的定义、Bean的初始化、Bean的使用、Bean的销毁。Bean的初始化可以通过指定init-method属性来完成beanid=sampleclass=com.fendou.service.impl.SampleImpl“init-method=“init”/或者通过实现org.springframework.beans.factory.InitializingBean接口,实现afterPropertiesSet()方法来完成Bean的销毁可以通过指定destory-method属性来完成beanid=sampleclass=com.fendou.service.impl.SampleImpl“destory-method=“clearup”/或者通过实现org.springframework.beans.factory.DisposableBean接口,实现destory()方法来完成Bean的自动装配模式Spring提供了5种自动装配的模式,从而减少一些属性的设置。在bean元素中设置autowire属性byName模式,通过Bean的属性名字进行自动装配byType模式,通过在配置文件查找一个属性类型一样的Bean来进行自动装配constructor模式,是指根据构造函数的参数尽心自动装配autodetect模式,通过对Bean检查类的内部来选择是constructor还是byType模式no模式,不使用自动装配在企业应用开发过程中,是不主张使用自动装配模式的Bean的依赖检查Spring允许Bean在初始化之前强制执行其他Bean的初始化。通过的bean元素中指定depends-on属性设置通过在bean元素中指定dependency-check属性来检查Bean的每个属性是否设定完成。simple模式,对基本类型、字符串、集合进行依赖检查object模式,对依赖的对象进行依赖检查all模式,对全部属性进行依赖检查none模式,不进行依赖检查基于注解的依赖注入基于注解(Annotation)的配置有越来越流行的趋势,Spring2.5顺应这种趋势,提供了完全基于注释配置Bean、装配Bean的功能,学员可以使用基于注解的SpringIoC替换原来基于XML的配置。注解配置相对于XML配置具有很多的优势:它可以充分利用Java的反射机制获取类结构信息,这些信息可以有效减少配置的工作。注释和Java代码位于一个文件中,而XML配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和Java代码放在一起,有助于增强程序的内聚性。而采用独立的XML配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。因此在很多情况下,注解配置比XML配置更受欢迎,注解配置有进一步流行的趋势。Spring2.5的一大增强就是引入了很多注释类,现在我们已经可以使用注解配置完成大部分XML配置的功能。基于注解的依赖注入spring注解的使用1、要使用注解来代替xml的配置,要引入如下jar包:%spring_home%\lib\j2ee\common-annotations.jar。而且在applicationContext.xml中要加入context:annotation-config/的命名空间。2、引入spring头文件3、写@开头注解@Resource注入接口配置文件修改beansxmlns=:xsi=:context=:schemaLocation=
本文标题:Spring_从入门到精通
链接地址:https://www.777doc.com/doc-3661619 .html