Spring入门到精通.ppt

上传人:豆**** 文档编号:25016469 上传时间:2022-07-09 格式:PPT 页数:191 大小:1.69MB
返回 下载 相关 举报
Spring入门到精通.ppt_第1页
第1页 / 共191页
Spring入门到精通.ppt_第2页
第2页 / 共191页
点击查看更多>>
资源描述

《Spring入门到精通.ppt》由会员分享,可在线阅读,更多相关《Spring入门到精通.ppt(191页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、BSTomcatdbBrowserStruts2FilterServiceHiberntateSpring IOCTransactionManagerShiroQuartzHello World讲师:佟刚新浪微博:尚硅谷-佟刚Spring 是什么(1) Spring 是一个开源框架. Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能. Spring 是一个 IOC(DI) 和 AOP 容器框架.J2ee without ejbSpring 是什么(2) 具体描述 Spring: 轻量级轻量级:Spring Spr

2、ing 是非侵入性的是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API 依赖注入依赖注入(DI - dependency injection、IOC) 面向切面编程面向切面编程(AOP - aspect oriented programming) 容器容器: Spring 是一个容器, 因为它包含并且管理应用对象的生命周期 框架框架: Spring 实现了使用简单的组件配置组合成一个复杂的应用. 在 Spring 中可以使用 XML 和 Java 注解组合这些对象 一站式一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第

3、三方类库 (实际上 Spring 自身也提供了展现层的 SpringMVC 和 持久层的 Spring JDBC)Spring 模块7安装 SPRING TOOL SUITESPRING TOOL SUITE 是一个 Eclipse 插件,利用该插件可以更方便的在 Eclipse 平台上开发基于 Spring 的应用。安装方法说明(springsource-tool-suite-3.4.0.RELEASE-e4.3.1-updatesite.zip):HelpHelp - Install New Software.Install New Software.Click Add. In dialo

4、g Add Site dialog, click Archive. Archive. Navigate to springsource-tool-suite-3.4.0.RELEASE-e4.3.1-springsource-tool-suite-3.4.0.RELEASE-e4.3.1-updatesite.zipupdatesite.zip and click Open Open Clicking OKOK in the Add Site dialog will bring you back to the dialog Install Select the xxx/Spring IDExx

5、x/Spring IDE that has appeared Click Next Next and then FinishFinish Approve the license Approve the license Restart eclipse when that is asked搭建 Spring 开发环境把以下 jar 包加入到工程的 classpath 下:Spring 的配置文件: 一个典型的 Spring 项目需要创建一个或多个 Bean 配置文件, 这些配置文件用于在 Spring IOC 容器里配置 Bean. Bean 的配置文件可以放在放在 classpath class

6、path 下下, 也可以放在其它目录下.建立 Spring 项目HelloWorld.javaapplicationContext.xml建立 Spring 项目Spring 中的 Bean 配置讲师:佟刚新浪微博:尚硅谷-佟刚内容提要IOC & DI IOC & DI 概述概述配置 bean 配置形式:基于 XML 文件的方式;基于注解的方式 Bean 的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean IOC 容器 BeanFactory & ApplicationContext 概述 依赖注入的方式:属性注入;构造器注入 注入属性值细节

7、 自动转配 bean 之间的关系:继承;依赖 bean 的作用域:singleton;prototype;WEB 环境作用域 使用外部属性文件 spEL IOC 容器中 Bean 的生命周期 Spring 4.x 新特性:泛型依赖注入IOC 和 DI IOC(Inversion of Control):其思想是反转资源获取的方向反转资源获取的方向. 传统的资源查找方式要求组件向容器发起请求查找资源. 作为回应, 容器适时的返回资源. 而应用了 IOC 之后, 则是容器主动地将资源推送给它所管理的组件容器主动地将资源推送给它所管理的组件, , 组件所要做的组件所要做的仅是选择一种合适的方式来接受

8、资源仅是选择一种合适的方式来接受资源. 这种行为也被称为查找的被动形式 DI(Dependency Injection) IOC 的另一种表述方式:即组件以一些预先定义好的方式组件以一些预先定义好的方式( (例如例如: setter : setter 方法方法) )接受来自接受来自如容器的资源注入如容器的资源注入. . 相对于 IOC 而言,这种表述更直接ABclass Aclass B private A a;public void setA(A a)this.a = a;容器需求:从容器中获取 B 对象,并使 B 对象的 a 属性被赋值为容器中 A 对象的引用A a = getA();B

9、b = getB();b.setA(a);ABIOC容器B b = getB();IOC 前生 - 分离接口与实现 需求: 生成 HTML 或 PDF 格式的不同类型的报表.IOC 前生 - 采用工厂设计模式IOC - 采用反转控制内容提要IOC & DI 概述配置配置 bean bean 配置形式:基于配置形式:基于 XML XML 文件的方式文件的方式;基于注解的方式 Bean Bean 的配置方式:通过全类名(反射)的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean IOC IOC 容器容器 BeanFactory & Applicat

10、ionContext BeanFactory & ApplicationContext 概述概述 依赖注入的方式:属性注入;构造器注入依赖注入的方式:属性注入;构造器注入 注入属性值细节 自动转配 bean 之间的关系:继承;依赖 bean 的作用域:singleton;prototype;WEB 环境作用域 使用外部属性文件 spEL IOC 容器中 Bean 的生命周期 Spring 4.x 新特性:泛型依赖注入在 Spring 的 IOC 容器里配置 Bean在 xml 文件中通过 bean 节点来配置 beanid:Bean 的名称。 在在 IOC IOC 容器中必须是唯一的容器中必须

11、是唯一的 若若 id id 没有指定,没有指定,Spring Spring 自动将权限定性类名作为自动将权限定性类名作为 Bean Bean 的名字的名字 id 可以指定多个名字,名字之间可用逗号、分号、或空格分隔Spring 容器 在 Spring IOC Spring IOC 容器容器读取 Bean 配置创建 Bean 实例之前, 必须对它进行实例化. 只有在容器实例化后, 才可以从 IOC 容器里获取 Bean 实例并使用. Spring 提供了两种类型的 IOC 容器实现. BeanFactoryBeanFactory: IOC 容器的基本实现. ApplicationContextA

12、pplicationContext: 提供了更多的高级特性. 是 BeanFactory 的子接口. BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身;ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应几乎所有的应用场合都直接使用用场合都直接使用 ApplicationContext ApplicationContext 而非底层的而非底层的 BeanFactory BeanFactory 无论使用何种方式, 配置文件时相同的.ApplicationContextApplicationContext 的主要实现类: Cla

13、ssPathXmlApplicationContextClassPathXmlApplicationContext:从 类路径类路径下下加载配置文件 FileSystemXmlApplicationContext: 从文件系统中加载配置文件ConfigurableApplicationContext 扩展于 ApplicationContext,新增加两个主要方法:refresh() 和 close()close(), 让 ApplicationContext 具有启动、刷新和关闭上下文的能力ApplicationContext ApplicationContext 在初始化上下文时就实例在初

14、始化上下文时就实例化所有单例的化所有单例的 Bean Bean。WebApplicationContext 是专门为 WEB 应用而准备的,它允许从相对于 WEB 根目录的路径中完成初始化工作从 IOC 容器中获取 Bean 调用 ApplicationContext 的 getBean() 方法依赖注入的方式 Spring 支持 3 种依赖注入的方式 属性注入属性注入 构造器注入构造器注入 工厂方法注入(很少使用,不推荐)属性注入 属性注入即通过 setter setter 方法方法注入Bean 的属性值或依赖的对象 属性注入使用 元素, 使用 name 属性指定 Bean 的属性名称,va

15、lue 属性或 子节点指定属性值 属性注入是实际应用中最常用的注入方式属性注入是实际应用中最常用的注入方式构造方法注入 通过构造方法注入Bean 的属性值或依赖的对象,它保证了 Bean 实例在实例化后就可以使用。 构造器注入在 元素里声明属性, 中没有中没有 name name 属性属性26构造方法注入按索引匹配入参:按类型匹配入参:内容提要IOC & DI 概述配置配置 bean bean 配置形式:基于配置形式:基于 XML XML 文件的方式文件的方式;基于注解的方式 Bean 的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean IO

16、C 容器 BeanFactory & ApplicationContext 概述 依赖注入的方式:属性注入;构造器注入 注入属性值细节注入属性值细节 自动转配 bean 之间的关系:继承;依赖 bean 的作用域:singleton;prototype;WEB 环境作用域 使用外部属性文件 spEL IOC 容器中 Bean 的生命周期 Spring 4.x 新特性:泛型依赖注入字面值 字面值:可用字符串表示的值,可以通过 元素标签或 value 属性进行注入。 基本数据类型及其封装类、String 等类型都可以采取字面值注入的方式 若字面值中包含特殊字符,可以使用 把字面值包裹起来。引用其它

17、 Bean 组成应用程序的 Bean 经常需要相互协作以完成应用程序的功能. 要使使 Bean Bean 能够相互访问能够相互访问, 就必须在 Bean 配置文件中指定对 Bean 的引用 在 Bean 的配置文件中, 可以通过通过 元素或元素或 ref ref 属性属性为 Bean 的属性或构造器参数指定对 Bean 的引用. 也可以在属性或构造器里包含在属性或构造器里包含 Bean Bean 的声明的声明, 这样的 Bean 称为内部内部 Bean Bean内部 Bean 当 Bean 实例仅仅仅仅给一个特定的属性使用时, 可以将其声明为内部 Bean. 内部 Bean 声明直接包含在 或

18、 元素里, 不需要设置任何 id 或 name 属性 内部 Bean 不能使用在任何其他地方注入参数详解:null 值和级联属性 可以使用专用的 元素标签为 Bean 的字符串或其它对象类型的属性注入 null 值 和 Struts、Hiberante 等框架一样,Spring Spring 支持支持级联属性的配置级联属性的配置。集合属性 在 Spring中可以通过一组内置的 xml 标签(例如: , 或 ) 来配置集合属性. 配置 java.util.List 类型的属性, 需要指定 标签, 在标签里包含一些元素. 这些标签可以通过 指定简单的常量值, 通过 指定对其他 Bean 的引用.

19、通过 指定内置 Bean 定义. 通过 指定空元素. 甚至可以内嵌其他集合. 数组的定义和 List 一样, 都使用 配置 java.util.Set 需要使用 标签, 定义元素的方法与 List 一样.集合属性 Java.util.Map 通过 标签定义, 标签里可以使用多个 作为子标签. 每个条目包含一个键和一个值. 必须在 标签里定义键 因为键和值的类型没有限制, 所以可以自由地为它们指定 , , , , 或或 元素. 可以将 Map 的键和值作为 的属性定义: 简单常量使用 key 和 value 来定义; Bean 引用通过 key-ref 和 value-ref 属性定义 使用 定

20、义 java.util.Properties, 该标签使用多个 作为子标签. 每个 标签必须定义 keykey 属性. 使用 utility scheme 定义集合 使用基本的集合标签定义集合时, 不能将集合作为独不能将集合作为独立的立的 Bean Bean 定义定义, , 导致其他导致其他 Bean Bean 无法引用该集合无法引用该集合, , 所以无法在不同所以无法在不同 Bean Bean 之间共享集合之间共享集合. 可以使用 util schema 里的集合标签定义独立的集合 Bean. 需要注意的是, 必须在 根元素里添加 util schema 定义使用 p 命名空间 为了简化 X

21、ML 文件的配置,越来越多的 XML 文件采用属性而非子元素配置信息。 Spring 从 2.5 版本开始引入了一个新的 p 命名空间,可以通过 元素属性的方式配置 Bean 的属性。 使用 p 命名空间后,基于 XML 的配置方式将进一步简化内容提要IOC & DI 概述配置配置 bean bean 配置形式:基于配置形式:基于 XML XML 文件的方式文件的方式;基于注解的方式 Bean 的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean IOC 容器 BeanFactory & ApplicationContext 概述 依赖注入的方

22、式:属性注入;构造器注入 注入属性值细节 自动装配自动装配 bean 之间的关系:继承;依赖 bean 的作用域:singleton;prototype;WEB 环境作用域 使用外部属性文件 spEL IOC 容器中 Bean 的生命周期 Spring 4.x 新特性:泛型依赖注入XML 配置里的 Bean 自动装配 Spring IOC 容器可以自动装配 Bean. 需要做的仅仅是在在 的的 autowire autowire 属性里指定自动装配的模式属性里指定自动装配的模式 byTypebyType(根据类型自动装配): 若 IOC 容器中有多个与目标 Bean 类型一致的 Bean. 在

23、这种情况下, Spring 将无法判定哪个 Bean 最合适该属性, 所以不能执行自动装配. byNamebyName(根据名称自动装配): 必须将目标 Bean 的名称和属性名设置的完全相同. constructor(通过构造器自动装配): 当 Bean 中存在多个构造器时, 此种自动装配方式将会很复杂. 不推荐使用不推荐使用39XML 配置里的 Bean 自动装配的缺点 在 Bean 配置文件里设置 autowire 属性进行自动装配将会装配 Bean 的所有属性. 然而, 若只希望装配个别属性时, autowire 属性就不够灵活了. autowire 属性要么根据类型自动装配, 要么根

24、据名称自动装配, 不能两者兼而有之. 一般情况下,在实际的项目中很少使用自动装配功能,因为和自动装配功能所带来的好处比起来,明确清晰的配置文档更有说服力一些内容提要IOC & DI 概述配置配置 bean bean 配置形式:基于配置形式:基于 XML XML 文件的方式文件的方式;基于注解的方式 Bean 的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean IOC 容器 BeanFactory & ApplicationContext 概述 依赖注入的方式:属性注入;构造器注入 注入属性值细节 自动装配 bean bean 之间的关系:继承

25、;依赖之间的关系:继承;依赖 bean 的作用域:singleton;prototype;WEB 环境作用域 使用外部属性文件 spEL IOC 容器中 Bean 的生命周期 Spring 4.x 新特性:泛型依赖注入继承 Bean 配置Spring Spring 允许继承允许继承 bean bean 的配置的配置, 被继承的 bean 称为父 bean. 继承这个父 Bean 的 Bean 称为子 Bean子子 Bean Bean 从父从父 Bean Bean 中继承配置中继承配置, , 包括包括 Bean Bean 的属性配置的属性配置子 Bean 也可以覆盖覆盖从父 Bean 继承过来的

26、配置父 Bean 可以作为配置模板, 也可以作为 Bean 实例. 若只想把若只想把父父 Bean Bean 作为模板作为模板, , 可以设置可以设置 的的abstract abstract 属性为属性为 true true, 这样 Spring 将不会实例化这个 Bean并不是并不是 元素里的所有属性都会被继承元素里的所有属性都会被继承. 比如: autowire, abstract 等.也可以忽略父可以忽略父 Bean Bean 的的 class class 属性属性, 让子 Bean 指定自己的类, 而共享相同的属性配置. 但此时 abstract abstract 必须设为必须设为 t

27、rue true依赖 Bean 配置 Spring Spring 允许用户通过允许用户通过 depends-on depends-on 属性设定属性设定 Bean Bean 前置依赖的前置依赖的BeanBean,前置依赖的 Bean 会在本 Bean 实例化之前创建好 如果前置依赖于多个如果前置依赖于多个 Bean Bean,则可以通过逗号,空,则可以通过逗号,空格或的方式配置格或的方式配置 Bean Bean 的名称的名称内容提要IOC & DI 概述配置配置 bean bean 配置形式:基于配置形式:基于 XML XML 文件的方式文件的方式;基于注解的方式 Bean 的配置方式:通过全

28、类名(反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean IOC 容器 BeanFactory & ApplicationContext 概述 依赖注入的方式:属性注入;构造器注入 注入属性值细节 自动装配 bean 之间的关系:继承;依赖 bean bean 的作用域:的作用域:singletonsingleton;prototypeprototype;WEB WEB 环境作用域环境作用域 使用外部属性文件 spEL IOC 容器中 Bean 的生命周期 Spring 4.x 新特性:泛型依赖注入Bean 的作用域在 Spring 中, 可以在 元素的 scope

29、scope 属性里设置 Bean 的作用域. 默认情况下默认情况下, Spring , Spring 只为每个在只为每个在 IOC IOC 容器里声明的容器里声明的 Bean Bean 创建唯创建唯一一个实例一一个实例, , 整个整个 IOC IOC 容器范围内都能共享该实例容器范围内都能共享该实例:所有后续的 getBean() 调用和 Bean 引用都将返回这个唯一的 Bean 实例.该作用域被称为 singletonsingleton, 它是所有 Bean 的默认作用域.内容提要IOC & DI 概述配置配置 bean bean 配置形式:基于配置形式:基于 XML XML 文件的方式文

30、件的方式;基于注解的方式 Bean 的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean IOC 容器 BeanFactory & ApplicationContext 概述 依赖注入的方式:属性注入;构造器注入 注入属性值细节 自动装配 bean 之间的关系:继承;依赖 bean 的作用域:singleton;prototype;WEB 环境作用域 使用外部属性文件使用外部属性文件 spEL IOC 容器中 Bean 的生命周期 Spring 4.x 新特性:泛型依赖注入使用外部属性文件使用外部属性文件 在配置文件里配置 Bean 时, 有时

31、需要在 Bean 的配置里混入系统部署的细节信息系统部署的细节信息(例如: 文件路径, 数据源配置信息等). 而这些部署细节实际上需要和 Bean 配置相分离 Spring 提供了一个 PropertyPlaceholderConfigurer 的 BeanFactory BeanFactory 后置处理器后置处理器, 这个处理器允许用户将 Bean 配置的部分内容外移到属性文件属性文件中. 可以在 Bean 配置文件里使用形式为 $var$var 的变量, PropertyPlaceholderConfigurer 从属性文件里加载属性, 并使用这些属性来替换变量. Spring 还允许在属

32、性文件中使用 $propName,以实现属性之间的相互引用。47注册 PropertyPlaceholderConfigurer Spring 2.0: Spring 2.5 Spring 2.5 之后之后: : 可通过可通过 元素简化元素简化: : 中添加 context Schema 定义 在配置文件中加入如下配置: 内容提要IOC & DI 概述配置配置 bean bean 配置形式:基于配置形式:基于 XML XML 文件的方式文件的方式;基于注解的方式 Bean 的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean IOC 容器 Be

33、anFactory & ApplicationContext 概述 依赖注入的方式:属性注入;构造器注入 注入属性值细节 自动装配 bean 之间的关系:继承;依赖 bean 的作用域:singleton;prototype;WEB 环境作用域 使用外部属性文件 SpEL SpEL IOC 容器中 Bean 的生命周期 Spring 4.x 新特性:泛型依赖注入Spring表达式语言:SpEL Spring Spring 表达式语言表达式语言(简称SpELSpEL):是一个支持运行时查支持运行时查询和操作对象图的强大的表达式语言询和操作对象图的强大的表达式语言。 语法类似于语法类似于 EL E

34、L:SpEL SpEL 使用使用 # # 作为定界符,所有在大作为定界符,所有在大框号中的字符都将被认为是框号中的字符都将被认为是 SpEL SpEL SpEL SpEL 为为 bean bean 的属性进行动态赋值提供了便利的属性进行动态赋值提供了便利 通过 SpEL 可以实现: 通过 bean 的 id 对 bean 进行引用 调用方法以及引用对象中的属性 计算表达式的值 正则表达式的匹配SpEL:字面量 字面量的表示: 整数: 小数: 科学计数法: StringString可以使用单引号或者双引号作为字符串的定界符号可以使用单引号或者双引号作为字符串的定界符号: 或 Boolean:Sp

35、EL:引用 Bean、属性和方法(1)引用其他对象:引用其他对象:引用其他对象的属性引用其他对象的属性调用其他方法,还可以链式操作调用其他方法,还可以链式操作SpEL支持的运算符号(1)算数运算符:算数运算符:+, -, +, -, * *, /, %, , /, %, :加号还可以用作字符串连接:加号还可以用作字符串连接:比较运算符:比较运算符: , =, =, lt, gt, eq, le, ge , =, =, lt, gt, eq, le, geSpEL支持的运算符号(2)逻辑运算符号:逻辑运算符号: and, or, not, | and, or, not, |if-else if-

36、else 运算符:运算符:?: (ternary), ?: (Elvis)?: (ternary), ?: (Elvis)if-else if-else 的变体的变体正则表达式:正则表达式:matchesmatchesSpEL:引用 Bean、属性和方法(2) 调用静态方法或静态属性调用静态方法或静态属性:通过 T() T() 调用一个类的静态方法,它将返回一个 Class Object,然后再调用相应的方法或属性: 内容提要IOC & DI 概述配置配置 bean bean 配置形式:基于配置形式:基于 XML XML 文件的方式文件的方式;基于注解的方式 Bean 的配置方式:通过全类名(

37、反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean IOC 容器 BeanFactory & ApplicationContext 概述 依赖注入的方式:属性注入;构造器注入 注入属性值细节 自动装配 bean 之间的关系:继承;依赖 bean 的作用域:singleton;prototype;WEB 环境作用域 使用外部属性文件 spEL IOC IOC 容器中容器中 Bean Bean 的生命周期的生命周期 Spring 4.x 新特性:泛型依赖注入IOC 容器中 Bean 的生命周期方法 Spring IOC Spring IOC 容器可以管理容器可以管理 B

38、ean Bean 的生命周期的生命周期, Spring 允许在 Bean 生命周期的特定点执行定制的任务. Spring IOC 容器对 Bean 的生命周期进行管理的过程: 通过构造器或工厂方法创建 Bean 实例 为 Bean 的属性设置值和对其他 Bean 的引用 调用调用 Bean Bean 的初始化方法的初始化方法 Bean 可以使用了 当容器关闭时当容器关闭时, , 调用调用 Bean Bean 的销毁方法的销毁方法 在 Bean 的声明里设置 init-method 和 destroy-method 属性, 为 Bean 指定初始化和销毁方法.创建 Bean 后置处理器 Bean

39、 Bean 后置处理器允许在调用初始化方法前后对后置处理器允许在调用初始化方法前后对 Bean Bean 进进行额外的处理行额外的处理. . Bean Bean 后置处理器对后置处理器对 IOC IOC 容器里的所有容器里的所有 Bean Bean 实例逐一处实例逐一处理理, 而非单一实例. 其典型应用是: 检查 Bean 属性的正确性或根据特定的标准更改 Bean 的属性. 对Bean 后置处理器而言, 需要实现 接口. 在初始化方法被调用前后, Spring 将把每个 Bean 实例分别传递给上述接口的以下两个方法:添加 Bean 后置处理器后 Bean 的生命周期 Spring IOC

40、容器对 Bean 的生命周期进行管理的过程: 通过构造器或工厂方法创建 Bean 实例 为 Bean 的属性设置值和对其他 Bean 的引用 将将 Bean Bean 实例传递给实例传递给 Bean Bean 后置处理器的后置处理器的 postProcessBeforeInitialization postProcessBeforeInitialization 方法方法 调用 Bean 的初始化方法 将将 Bean Bean 实例传递给实例传递给 Bean Bean 后置处理器的后置处理器的 postProcessAfterInitializationpostProcessAfterIniti

41、alization方法方法 Bean 可以使用了 当容器关闭时, 调用 Bean 的销毁方法内容提要IOC & DI 概述配置 bean 配置形式:基于 XML 文件的方式;基于注解的方式; Bean Bean 的配置方式的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法通过工厂方法(静态工厂方法 & & 实例工厂方法)、实例工厂方法)、FactoryBean IOC 容器 BeanFactory & ApplicationContext 概述 依赖注入的方式:属性注入;构造器注入 注入属性值细节(bean 之间的关联关系) 自动装配 bean 之间的关系:继承;依赖; bean 的作

42、用域:singleton;prototype;WEB 环境作用域 使用外部属性文件 spEL IOC 容器中 Bean 的生命周期 Spring 4.x 新特性:泛型依赖注入通过调用静态工厂方法创建 Bean 调用静态工厂方法静态工厂方法创建 Bean是将对象创建的过程对象创建的过程封装到静态方法中封装到静态方法中. 当客户端需要对象时, 只需要简单地调用静态方法, 而不同关心创建对象的细节. 要声明通过静态方法创建的 Bean, 需要在 Bean 的 classclass 属性里指定拥有该工厂的方法的类, 同时在 factory-methodfactory-method 属性里指定工厂方法的

43、名称. 最后, 使用 元素为该方法传递方法参数.通过调用实例工厂方法创建 Bean 实例工厂方法实例工厂方法: 将对象的创建过程封装到另外一将对象的创建过程封装到另外一个对象实例的方法里个对象实例的方法里. 当客户端需要请求对象时, 只需要简单的调用该实例方法而不需要关心对象的创建细节. 要声明通过实例工厂方法创建的 Bean 在 bean 的 factory-beanfactory-bean 属性里指定拥有该工厂方法的 Bean 在 factory-methodfactory-method 属性里指定该工厂方法的名称 使用 construtor-argconstrutor-arg 元素为工厂

44、方法传递方法参数内容提要IOC & DI 概述配置 bean 配置形式:基于 XML 文件的方式;基于注解的方式; Bean Bean 的配置方式的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBeanFactoryBean IOC 容器 BeanFactory & ApplicationContext 概述 依赖注入的方式:属性注入;构造器注入 注入属性值细节 自动转配 bean 之间的关系:继承;依赖; bean 的作用域:singleton;prototype;WEB 环境作用域 使用外部属性文件 spEL IOC 容器中 Bean 的生命周

45、期 Spring 4.x 新特性:泛型依赖注入实现 FactoryBean 接口在 Spring IOC 容器中配置 Bean Spring 中有两种类型的 Bean, 一种是普通Bean, 另一种是工厂Bean, 即FactoryBean. 工厂 Bean 跟普通Bean不同, 其返回的对象不是指定类的一个实例, 其返回的是该工厂 Bean 的 getObject 方法所返回的对象 内容提要IOC & DI 概述配置 bean 配置形式:配置形式:基于 XML 文件的方式;基于注解的方式(基于注解配置基于注解的方式(基于注解配置 Bean Bean;基于注解来装配基于注解来装配 Bean B

46、ean 的属性)的属性) Bean 的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean IOC 容器 BeanFactory & ApplicationContext 概述 依赖注入的方式:属性注入;构造器注入;工厂方法注入 注入属性值细节 自动转配 bean 之间的关系:继承;依赖; bean 的作用域:singleton;prototype;WEB 环境作用域 使用外部属性文件 spEL IOC 容器中 Bean 的生命周期 Spring 4.x 新特性:泛型依赖注入在 classpath 中扫描组件 组件扫描(component sca

47、nning): Spring 能够从 classpath 下自动扫描, 侦测和实例化具有特定注解的组件. 特定组件包括: Component: 基本注解, 标识了一个受 Spring 管理的组件 Respository: 标识持久层组件 Service: 标识服务层(业务层)组件 Controller: 标识表现层组件 对于扫描到的组件, Spring Spring 有默认的命名策略有默认的命名策略: 使用非限定类名, 第一个字母小写. . 也可以在注解中通过也可以在注解中通过 value value 属属性值标识组件的名称性值标识组件的名称在 classpath 中扫描组件 当在组件类上使用

48、了特定的注解之后, 还需要在 Spring 的配置文件中声明 : base-package base-package 属性指定一个需要扫描的基类包属性指定一个需要扫描的基类包,Spring Spring 容器将会扫容器将会扫描这个基类包里及其子包中的所有类描这个基类包里及其子包中的所有类. . 当需要扫描多个包时当需要扫描多个包时, , 可以使用逗号分隔可以使用逗号分隔. 如果仅希望扫描特定的类而非基包下的所有类,可使用 resource-pattern 属性过滤特定的类,示例: 子节点表示要包含的目标类子节点表示要包含的目标类 子节点表示要排除在外的目标类子节点表示要排除在外的目标类 下可以

49、拥有若干个 和 子节点在 classpath 中扫描组件 和 子节点支持多种类型的过滤表达式:组件装配 元素还会自动注册 AutowiredAnnotationBeanPostProcessor 实例, 该实例可以自动装配具有 Autowired Autowired 和和 Resource Resource 、InjectInject注解的属性.使用 Autowired 自动装配 BeanAutowired 注解自动装配具有兼容类型具有兼容类型的单个 Bean属性 构造器构造器, , 普通字段普通字段( (即使是非即使是非 public), public), 一切具有参数的方法都可以应用一切具

50、有参数的方法都可以应用Authwired Authwired 注解注解 默认情况下默认情况下, , 所有使用所有使用 Authwired Authwired 注解的属性都需要被设置注解的属性都需要被设置. . 当当 Spring Spring 找不找不到匹配的到匹配的 Bean Bean 装配属性时装配属性时, , 会抛出异常会抛出异常, , 若某一属性允许不被设置若某一属性允许不被设置, , 可以设置可以设置 Authwired Authwired 注解的注解的 required required 属性为属性为 false false 默认情况下, 当 IOC 容器里存在多个类型兼容的 Be

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁