spring 从入门到精通

上传人:正** 文档编号:53487504 上传时间:2018-09-01 格式:PPT 页数:58 大小:882KB
返回 下载 相关 举报
spring 从入门到精通_第1页
第1页 / 共58页
spring 从入门到精通_第2页
第2页 / 共58页
spring 从入门到精通_第3页
第3页 / 共58页
spring 从入门到精通_第4页
第4页 / 共58页
spring 从入门到精通_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《spring 从入门到精通》由会员分享,可在线阅读,更多相关《spring 从入门到精通(58页珍藏版)》请在金锄头文库上搜索。

1、Spring,轻量级容器框架,Spring简介,Spring是一个控制反转(Ioc)和面向切面编程(AOP)的轻量级的容器,为软件开发提供全方位支持的应用程序框架。控制反转(Inversion of Control,IoC)与依赖注入(Dependency Injection,DI)。由容器来管理对象之间的依赖关系(而不是对象本身来管理),就叫“控制反转”或“依赖注入”.,控制反转,应用本身不负责依赖对象的创建和维护,而是由外部容器来负责。这样控制权就由应用转移到外部容器,控制权的转移就是所谓的反转。,容器是符合某种规范能够提供一系列服务的管理器,开发人员可以利用容器所提供的服务来方便地实现某

2、些特殊的功能。所谓的“重量级”容器是指那些完全遵守J2EE的规范,提供规范中所有的服务。EJB就是典型的例子。“轻量级”容器的也是遵守J2EE的规范,但其中的服务可以自由配置。,Spring最常用的特性,利用Spring来创建对象(JavaBean工厂) 利用Spring构建业务逻辑层 管理依赖关系 适应需求变更 利用Spring创建数据访问对象(DAO) 利用Spring进行事务处理,Spring的安装,下载并解压 http:/www.springframework.org/ 将相应的jar包加入类路径 spring.jar 配置Spring ApplicationContext.xml,I

3、oC/DI,控制反转(Inversion of Control,IoC)与依赖注入(Dependency Injection,DI)。由容器来管理对象之间的依赖关系(而不是对象本身来管理),就叫“控制反转”或“依赖注入” 前面的例子,已清楚阐述IoC/DI出现的原因,以及IoC的基本原理:抽象不依赖于现实,而是现实依赖于抽象。 Spring框架的基本思想就是IoC/DI,Spring就是一个IoC容器 IoC与DI,说的是一回事,但DI这个名词更能表达这种设计模式的思想,Spring架构,依赖注入的类型,构造器注入 通过类的构造方法注入依赖关系 使用 元素 设值方法注入 通过类的setter方

4、法注入依赖关系 使用元素,依赖注入的配置,注入基本数据类型,字符串等。 在或元素中使用 在或元素中加上value属性 注入依赖对象 在或元素中使用 在或元素中加上ref属性 注入null值 如果使用这种形式,Spring是作为空字符串来对待的。可以使用表示null值 内部Bean,在或元素中使用元素再定义一个Bean 内部Bean的scope、id、name属性会被忽略 内部Bean总是prototype(原型)模式 内部Bean不能在包含该内部Bean的Bean之外,依赖注入的配置,注入集合 通过、配置与Java Collection类型对应List、Set、Map、Properties,,

5、Bean的依赖模式1,用ref属性指定依赖。 local模式Bean与被参考引用的Bean在同一个XML文件中,而且被参考 应用的Bean是指定id属性。Spring的XML解析器会在解析时匹配,如果没有匹配的元 素,XML解析器会产生一个错误。,Bean的依赖模式2,bean模式 (可找id,也可找name命名的别名)Bean与被参考引用的Bean可以在不同的XML文件中。ApplicationContext context = new ClassPathXmlApplicationContext (new String“beans1.xml“,“beans2.xml“);bean-dao.

6、xml bean-po.xml bean-service.xml bean-.xml,Bean的依赖模式3,parent模式,表示被参考引用的Bean可以是当前BeanFactory或ApplicationContext的父BeanFactory或ApplicationContext中的Bean。表示继承的父类 如果有很多继承同一个父类的BEAN 那么在配置文件中实例那些BEAN时候可以省略掉父类已经注入的属性 bean定义继承父bean定义,它可以覆盖父bean的一些值,或者它需要的值。,三种实例化Bean的方式,使用类构造器实例化,也就是没有参数的构造函数来建立Bean的实例 使用静态工厂

7、方法实例化public PersonFactory public static Person getPerson()return new Person(); ,使用实例工厂方法实例化,Bean的作用域,Singleton。在Spring中取得的实例被默认为Singleton (单例)Prototype。在每次对该bean请求时创建出一个新的bean对象(原型)其他作用域:request、session、global session,延迟初始化Bean,默认的情况下在容器启动时会初始化Bean。但可以通过指定元素中的lazy-init属性来延迟初始化Bean,这样将会在第一次获取Bean的时候初

8、始化Bean 如果想对所有的Bean都延迟初始化,可以修改元素,Bean的生命周期,Bean的生命周期包括:Bean的定义、Bean的初始化、Bean的使用、Bean的销毁。 Bean的初始化可以通过指定init-method属性来完成或者通过实现org.springframework.beans.factory.InitializingBean接口,实现afterPropertiesSet()方法来完成 Bean的销毁可以通过指定destory-method属性来完成或者通过实现org.springframework.beans.factory.DisposableBean接口,实现dest

9、ory()方法来完成,Bean的自动装配模式,Spring提供了5种自动装配的模式,从而减少一些属性的设置。在元素中设置autowire属性 byName模式,通过Bean的属性名字进行自动装配 byType模式,通过在配置文件查找一个属性类型一样的Bean来进行自动装配 constructor模式,是指根据构造函数的参数尽心自动装配 autodetect模式,通过对Bean检查类的内部来选择是constructor还是byType模式 no模式,不使用自动装配 在企业应用开发过程中,是不主张使用自动装配模式的,Bean的依赖检查,Spring允许Bean在初始化之前强制执行其他Bean的初始

10、化。通过的元素中指定depends-on属性设置通过在元素中指定dependency-check属性来检查Bean的每个属性是否设定完成。 simple模式,对基本类型、字符串、集合进行依赖检查 object模式,对依赖的对象进行依赖检查 all模式,对全部属性进行依赖检查 none模式,不进行依赖检查,基于注解的依赖注入,基于注解(Annotation)的配置有越来越流行的趋势,Spring 2.5 顺应这种趋势,提供了完全基于注释配置 Bean、装配 Bean 的功能,学员可以使用基于注解的 Spring IoC 替换原来基于 XML 的配置。 注解配置相对于 XML 配置具有很多的优势:

11、 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。 注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和 Java 代码放在一起,有助于增强程序的内聚性。而采用独立的 XML 配置文件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停切换,这种思维上的不连贯会降低开发效率。 因此在很多情况下,注解配置比 XML 配置更受欢迎,注解配置有进一步流行的趋势。Spring 2.5 的一大增强就是引入了很多注释类,现在我们已经可以使用注解配置完成大部分 XML 配置的功能。,基于

12、注解的依赖注入,spring注解的使用 1、要使用注解来代替xml的配置,要引入如下jar包:%spring_home%libj2eecommon-annotations.jar。而且在applicationContext.xml中要加入的命名空间。 2、引入spring头文件 3、写 开头 注解 Resource注入接口,配置文件修改,基于注解的依赖注入,Resource注解 以前我们使通过配置xml文件方式来表示Bean之间的依赖关系,而现在我们可以通过Resource方式来表示Bean之间的依赖关系,package com.fendou; import javax.annotation.

13、Resource; public class User /通过Resource注解把配置文件中id为user1的bean注入给属性user1Resource(name=“user1“)private User1 user1;Resource(name=“user2“)private User2 user;/省略了getter和setter方法 ,基于注解的依赖注入,PostConstruct 和 PreDestroy注解 Spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特定的操作,您既可以通过实现 Initializin

14、gBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法,也可以通过元素的 init-method/destroy-method 属性指定初始化之后 / 销毁之前调用的操作方法。 关于 Spring 的生命周期已经在前面的章节详细讲解过了,现在我们用 PostConstruct 和PreDestroy这两个注释从新测试spring的生命周期。标注了 PostConstruct 的方法将在类实例化后调用,而标注了 PreDestroy 的方法将在类销毁之前调用。,请看User.java类 package com.fendou; import javax.annotati

15、on.PostConstruct; import javax.annotation.PreDestroy; public class User PostConstructpublic void init()System.out.println(“init“);PreDestroypublic void destory()System.out.println(“destory“); 下面是spring的配置,基于注解的依赖注入,Component注解 虽然我们可以通过Resource 在 Bean 类中使用自动注入功能,但是 Bean 还是在 XML 文件中通过 进行定义,也就是说,在 XML

16、配置文件中定义 Bean,通过Resource 为 Bean 的成员变量、方法入参或构造函数入参提供自动注入的功能。能否也通过注解定义 Bean,从 XML 配置文件中完全移除 Bean 定义的配置呢?答案是肯定的,我们通过 Spring 2.5 提供的 Component 注释就可以达到这个目标了。 下面,我们完全使用注释定义 Bean 并完成 Bean 之间装配: 使用Component注解的User1,仅需要在类定义处,使用 Component 注解就可以将一个类定义了 Spring 容器中的 Bean。 方法: 1、加入spring配置文件中加入 ,用Component方法注入到spring中.,Component public class User1 public void print()System.out.println(“我是User1“); ,基于注解的依赖注入,使用Component注解的User2,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号