———————————————————————————
——
javaEE 课程系列
Spring 框架
尚硅谷java 研究院
版本:V1.0
第 1 章 Spring 概述
1.1 Spring 概述
1)
2)
3)
4)
Spring 是一个开源框架
Spring 为简化企业级开发而生,使用Spring,JavaBean 就可以实现很多以前要靠EJB
才能实现的功能。同样的功能,在EJB 中要通过繁琐的配置和复杂的代码才能够实现,
而在Spring 中却非常的优雅和简洁。
Spring 是一个 IOC(DI)和 AOP 容器框架。
Spring 的优良特性
① 非侵入式:基于Spring 开发的应用中的对象可以不依赖于Spring 的API
② 依赖注入:DI——DependencyInjection,反转控制(IOC)最经典的实现。
③ 面向切面编程:AspectOrientedProgramming——AOP
④ 容器:Spring 是一个容器,因为它包含并且管理应用对象的生命周期
⑤ 组件化:Spring 实现了使用简单的组件配置组合成一个复杂的应用。在Spring 中
可以使用XML 和Java 注解组合这些对象。
5) 一站式:在IOC 和AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类
库(实际上Spring 自身也提供了表述层的SpringMVC 和持久层的SpringJDBC)。
Spring 模块
6)
1
更多 Java –大数据 –前端 –python 人工智能资料下载,可访问百度:尚硅谷官网
———————————————————————————
——
javaEE 课程系列
1.2 安装 Spring 插件【了解】
1.3 搭建 Spring 运行时环境
1) 插件包:springsource-tool-suite-3.4.0.RELEASE-e4.3.1-updatesite.zip
2) 操作步骤:参照《[尚硅谷]_参考资料:安装 Springtools 插件.doc》
1) 加入 JAR 包
①Spring 自身JAR 包:spring-framework-4.0.0.RELEASE\libs 目录下
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
②commons-logging-1.1.1.jar
2) 在 Spring Tool Suite 工具中通过如下步骤创建 Spring 的配置文件
① File->New->Spring Bean Configuration File
② 为文件取名字 例如:applicationContext.xml
2
更多 Java –大数据 –前端 –python 人工智能资料下载,可访问百度:尚硅谷官网
———————————————————————————
——
1.4 HelloWorld
javaEE 课程系列
1) 目标:使用 Spring 创建对象,为属性赋值
2) 创建 Student 类
3) 创建 Spring 配置文件
4) 测试:通过Spring 的IOC 容器创建Student 类实例
//1.创建IOC容器对象
ApplicationContextiocContainer=
newClassPathXmlApplicationContext("helloworld.xml");
//2.根据id值获取bean实例对象
Studentstudent=(Student)iocContainer.getBean("student");
3
更多 Java –大数据 –前端 –python 人工智能资料下载,可访问百度:尚硅谷官网
———————————————————————————
——
javaEE 课程系列
//3.打印bean
System.out.println(student);
第 2 章 IOC 容器和 Bean 的配置
2.1 IOC 和 DI
2.1.1 IOC(Inversion of Control):反转控制
在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需
要的资源,在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式,
增加了学习成本,同时降低了开发效率。
反转控制的思想完全颠覆了应用程序组件获取资源的传统方式:反转了资源的获取
方向——改由容器主动的将资源推送给需要的组件,开发人员不需要知道容器是如何创
建资源对象的,只需要提供接收资源的方式即可,极大的降低了学习成本,提高了开发
的效率。这种行为也称为查找的被动形式。
2.1.2 DI(Dependency Injection):依赖注入
2.1.3 IOC 容器在 Spring 中的实现
IOC 的另一种表述方式:即组件以一些预先定义好的方式(例如:setter 方法)接受
来自于容器的资源注入。相对于IOC 而言,这种表述更直接。
1)在通过IOC 容器读取Bean 的实例之前,需要先将IOC 容器本身实例化。
2)Spring 提供了IOC 容器的两种实现方式
①BeanFactory:IOC 容器的基本实现,是Spring 内部的基础设施,是面向
4
更多 Java –大数据 –前端 –python 人工智能资料下载,可访问百度:尚硅谷官网
———————————————————————————
——
Spring 本身的,不是提供给开发人员使用的。
②ApplicationContext:BeanFactory 的子接口,提供了更多高级特性。面向
Spring 的 使 用 者 , 几 乎 所 有 场 合 都 使 用ApplicationContext 而 不 是 底 层 的
BeanFactory
javaEE 课程系列
。
2.1.4 ApplicationContext 的主要实现类
ClassPathXmlApplicationContext:对应类路径下的 XML 格式的配置文件
1)
2)
3) 在初始化时就创建单例的 bean,也可以通过配置的方式指定创建的 Bean 是多实例的。
FileSystemXmlApplicationContext:对应文件系统中的 XML 格式的配置文件
2.1.5 ConfigurableApplicationContext
1) 是 ApplicationContext 的子接口,包含一些扩展方法
2)
refresh()和 close()让 ApplicationContext 具有启动、关闭和刷新上下文的能力。
5
更多 Java –大数据 –前端 –python 人工智能资料下载,可访问百度:尚硅谷官网
———————————————————————————
——
javaEE 课程系列
2.1.6 WebApplicationContext
1) 专门为 WEB 应用而准备的,它允许从相对于 WEB 根目录的路径中完成初始化工作
2.2 通过类型获取 bean
型的 bean 在容器中必须是唯一的。
果同一个类型的 bean 在 XML 文件中配置了多个,则获取时会抛出异常,所以同一个类
1) 从 IOC 容器中获取 bean 时,除了通过 id 值获取,还可以通过 bean 的类型获取。但如
HelloWorldhelloWorld=cxt.getBean(HelloWorld. class);
2) 或者可以使用另外一个重载的方法,同时指定 bean 的 id 值和类型
HelloWorldhelloWorld=cxt.getBean(“helloWorld”,HelloWorld. class);
2.3 给 bean 的属性赋值
2.3.1 依赖注入的方式
1. 通过 bean 的 setXxx()方法赋值
HelloWorld 中使用的就是这种方式
6
更多 Java –大数据 –前端 –python 人工智能资料下载,可访问百度:尚硅谷官网
———————————————————————————
——
javaEE 课程系列
2. 通过 bean 的构造器赋值
1)
Spring 自动匹配合适的构造器
2) 通过索引值指定参数位置
7
更多 Java –大数据 –前端 –python 人工智能资料下载,可访问百度:尚硅谷官网
———————————————————————————
——
javaEE 课程系列
3) 通过类型区分重载的构造器
2.3.2 p 名称空间
的属性。
使用 p 命名空间后,基于 XML 的配置方式将进一步简化。
为了简化 XML 文件的配置,越来越多的 XML 文件采用属性而非子元素配置信息。Spring
从2.5 版本开始引入了一个新的p 命名空间,可以通过元素属性的方式配置Bean
2.3.3 可以使用的值
1. 字面量
1) 可以使用字符串表示的值,可以通过 value 属性或 value 子节点的方式指定
2) 基本数据类型及其封装类、String 等类型都可以采取字面值注入的方式
3) 若字面值中包含特殊字符,可以使用把字面值包裹起来
8
更多 Java –大数据 –前端 –python 人工智能资料下载,可访问百度:尚硅谷官网