Spring知识点最全笔记.docx
- 文档编号:6678836
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:51
- 大小:71.81KB
Spring知识点最全笔记.docx
《Spring知识点最全笔记.docx》由会员分享,可在线阅读,更多相关《Spring知识点最全笔记.docx(51页珍藏版)》请在冰豆网上搜索。
Spring知识点最全笔记
说明
笔记中每个知识点均标有如下标识中的一个或多个,释义如下:
理解要求:
了解:
了解本知识点,明确本知识点的作用
理解:
理解本知识点所涉及内容的工作原理
操作要求:
操作:
根据本知识点所涉及的内容,进行课堂案例的制作
应用:
根据本知识点所涉及的内容,进行融会贯通,灵活应用
知识点相关:
重点:
本知识点为本课程重点内容
难点:
本知识点为本课程难点内容,理解难度较高(难点不一定是重点)
目录
spring简介【了解】3
资源包整理【了解】【应用】4
IoC【理解】【应用】【重点】5
DI【理解】【应用】【重点】7
BeanFactory【了解】8
Bean配置(XML)【理解】【应用】【重点】9
团队开发【了解】【操作】13
Bean配置(注解)【了解】【操作】14
Spring整合JUnit【了解】【操作】16
AOP简介【理解】【重点】17
AOP简介【理解】【重点】17
AOP基本概念【理解】【重点】18
AOP(XML)【理解】【应用】【重点】19
AOP(注解)【理解】【应用】【重点】24
CGLIB【理解】【难点】25
DAO模板类【了解】26
DAO支持抽象类【理解】【操作】29
事务管理基本概念【了解】31
声明式事务(XML)【理解】【重点】34
声明式事务(注解)【理解】【应用】【重点】36
SSH整合(XML)【理解】【应用】【重点】37
Hibernate模板类【理解】【应用】【重点】42
spring简介【了解】
1.Spring是一个基于Java的轻量级的J2EE框架
基于Java:
底层Java实现
轻量级:
性能较高,运行速度较快,内存消耗较少
重量级组件:
EJB、CGI
J2EE应用框架:
Spring可以在JEE开发的三层架构的每一层为开发者带来帮助
表现层:
Servlet/JSP,Struts2,SpringMVC
业务层:
Bean管理、AOP、事务管理
数据层:
JDBC,Hibernate,SpringJDBCTemplate
域模型层:
实体类+DAO
服务层:
远端调用(webservice)[类似技术RMI+JNDI]
Spring提供的每层的服务技术
表现层:
StringMVC
业务逻辑层:
Bean管理、AOP、事务管理
数据层:
DAO支持抽象类,DAO模板技术JDBCTemplate
2.Spring的发展历程
创始人:
RodJohnson
ExpertOne-to-OneJ2EEDesignandDevelopment(2002)
阐述了J2EE使用EJB开发设计的优点及解决方案
ExpertOne-to-OneJ2EEDevelopmentwithoutEJB(2004)
阐述了J2EE开发过程中不使用EJB的解决方式(Spring雏形)
3.Spring核心技术
IOC:
控制反转
AOP:
面向切面编程/面向方面编程
4.Spring是一个超级的“黏合平台”,将很多技术黏合在一起,形成一个整体,使每个组件发挥其最大功效
资源包整理【了解】【应用】
1.本课程基于Spring3.2.0进行讲解
2.下载地址:
http:
//maven.springframework.org/release/org/springframework/spring/
说明:
通过Maven部署资源从仓库获取(后期课程)
3.资源文件
Spring资源包下spring-framework-3.2.0.RELEASE-dist.zip
Spring依赖资源包spring-framework-3.0.2.RELEASE-dependencies.zip
4.资源包目录层次结构
docs:
API帮助文档与官方手册
libs:
开发使用的jar包
schema:
开发使用的XML约束文档源文件
5.开发jar包
核心jar(4个)
spring-beans-3.2.0.RELEASE.jar
spring-context-3.2.0.RELEASE.jar
spring-core-3.2.0.RELEASE.jar
spring-expression-3.2.0.RELEASE.jar
日志相关jar(2个)
commons-logging-1.1.1.jar
commons-logging日志整合,与slf4j类似,由apache提供
log4j-1.2.15.jar
IoC【理解】【应用】【重点】
1.IoC(InversionofControl)控制反转
A:
控制:
控制的双方是什么?
谁控制谁?
主控方:
Spring
被控方:
应用程序所使用的资源
(原始)应用程序控制自己执行操作需要使用的外部资源
(Spring)Spring控制整个程序中所需要使用的外部资源
B.反转:
什么是反转?
反转什么?
正向:
应用程序直接调用资源
反向:
应用程序依赖Spring为其提供资源
反转的是资源的控制权
应用程序由主动调用资源,变为被动的等待Spring提供资源
C.有什么好处?
正向缺点:
应用程序控制的资源分布在程序的每一个地方
反向的优点:
所有的资源都在Spring中,便于管理
总结:
Spring反向控制应用程序所需要使用的外部资源。
资源受Spring管理,利用率最大化。
2.Spring模型演化过程
A.基于分层设计
UserAction使用UserService,newUserService()
UserService使用UserDAO,newUserDAO()
UserDAO
B.工厂模式,使用面向接口编程设计,解决层与层之间的紧耦合
制作接口,制作实现类,制作对象工厂
C.工厂模式+配置
制作XML文件,将实现类配置到XML文件中
读取XML文件中的配置信息,得到实现类的类名
使用反射思想,获取实现类对象class.newInstance();
D.Spring设计雏形自动的工厂+配置
工厂由Spring提供,实现类使用XML格式配置
3.IoC基础实例
A.导入jar包(6个)
B.制作log4j对应的配置文件
C.在src目录下创建核心配置文件applicationContext.xml
说明:
格式可以从xsd-config.html获取
xmlversion="1.0"encoding="UTF-8"?
>
//www.springframework.org/schema/beans" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation=" http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans.xsd "> D.将应用程序需要使用的资源配置成Spring的Bean --Spring管理的资源全部声明到配置文件中--> --所有资源以Bean的形式存在--> --bean: 声明一个资源Bean--> --bean: id: 用于区分bean的标识--> --bean: class: bean对应的模型类名--> E.创建ApplicationContext对象 ApplicationContextctx=newClassPathXmlApplicationContext("配置文件名"); ApplicationContextctx=newClassPathXmlApplicationContext("applicationContext.xml"); F.获取Bean对象 使用应用上下文对象获取 ctx.getBean("bean的id属性值"); ctx.getBean("userService"); 补充: 使用文件系统获取配置信息,要求配置文件在工程路径下(少用) ApplicationContextctx=newFileSystemXmlApplicationContext("applicationContext.xml"); DI【理解】【应用】【重点】 1.DI(DependencyInjection)依赖注入指应用程序依赖Spring为其提供运行时所需的资源 2.DI实例 A.在应用程序中声明要使用的资源 privateStringmsg; B.为其提供setter访问器 publicvoidsetMsg(Stringmsg){ this.msg=msg; } C.在Bean配置中配置该资源对象具有某个属性,属性可以配置多个 --在配置中,为该Bean需要注入的资源进行初始化--> --property: 为该Bean注入属性--> --property: name: 注入的属性名称(变量名)--> 注意: 当配置中出现的属性在Bean类中不存在时,抛出异常 3.IoC与DI区别 同一件事,站在不同角度上看待问题的不同描述 IoC: Spring立场 DI: 应用程序立场 BeanFactory【了解】 1.BeanFactory是ApplicationContext的顶层父接口,使用BeanFactory接口也可以完成获取Bean的操作 2.操作步骤: A.初始化Resource对象 Resourceres=newClassPathResource("applicationContext.xml"); B.初始化BeanFactory对象 BeanFactorybf=newXmlBeanFactory(res); C.根据id名称获取Bean UserServiceservice=(UserService)bf.getBean("userService"); 3.AppplicationContext与BeanFactory的区别 A.加载方式不同 AppplicationContext: 立即加载,加载配置文件时即加载 BeanFactory: 延迟加载,获取Bean实例时才加载 B.AppplicationContext具有更多的功能 国际化处理 事件传递 Bean自动装配 各种不同应用层的Context实现 注意: 实际开发中,优先选择ApplicationContext对象,避免使用BeanFactory 4..Schema风格离线约束配置方式 A.拷贝访问路径 B.打开MyEclipse设置中的XMLcatalog选项 C.创建新的映射 D.选择对应的schema风格的约束文件 E.将keytype修改为schemalocation F.将要配置的路径复制到key中 Bean配置(XML)【理解】【应用】【重点】 1.Bean对象初始化方式有三种 构造器初始化: Bean对应的类必须提供一个默认无参可访问的构造方法 静态工厂初始化【了解】 提供一个工厂类,使用其中的静态方法获取对象 class="cn.itcast.bean.UserStataicFactory"配置中所配置的class配置成工厂类的类名 factory-method="getInst"配置工厂类中的创建实例的静态方法 > 实例工厂初始化【了解】 提供一个实例工厂类,使用其中的实例方法获取对象。 由于该工厂类本身需要创建对象,因此该对象必须受Spring控制,所以必须配置该工厂类为Bean —实例化工厂Bean--> --使用实例工厂创建Bean--> --factory-bean: 配置实例工厂在Spring范围内对应的Bean的id名称--> --factory-method: 配置工厂类中的创建实例的实例方法--> 2.Bean的作用域 Spring初始化的Bean默认为单例模式,如果想修改成非单例模式需要修改Bean的作用范围 scope属性: singleton: 单例 prototype: 非单例 request: 请求对象范围request.setAttribute("beanId",obj); session: 会话Session范围request.getSession().setAttribute("beanId",obj); globalSession: 全局会话 分布式服务器 3.Bean的生命周期 定义Bean初始化与销毁时的动作,属于回调方法配置 定义bean时指定两个回调方法,控制bean的初始化与销毁操作时执行的动作 --init-method: 初始化回调方法名,配置的方法必须由bean对象提供--> --destroy-method: 销毁回调方法名,配置的方法必须由bean对象提供--> init-method="init"destroy-method="destroy"scope="prototype"> 销毁操作只针对scope="singletion"的对象,对于非单例对象无效 单例对象的销毁是在IoC容器关闭时发生,使用ClassPathXmlApplicationContext对象close方法完成 非单例Bean对象的内存回收交由JVM完成——GC 4.Bean属性注入 注入方式有两种 构造器注入【了解】 A.提供对应的构造方法 B.配置中设置构造方法的参数 --constructor-arg: 使用构造器传递参数--> --value: 赋值--> 注意: 如果类型匹配不成功,可以为配置中指定index索引属性,对应构造器中参数的位置 说明: 构造器传参受构造器参数位置和类型的限定,因此不常使用 Setter注入【重点】 前提: setter注入要求Bean必须提供无参可访问构造方法 注入简单类型: String,基本数据类型封装类 A.提供对应要注入的属性 B.为每个要注入的属性提供对应的标准封装setter方法 C.在配置中为Bean指定要注入的属性,使用property元素name=“属性名”value=”值” 注入引用类型: 对象 A.为某个Bean注入引用类型的值,首先在Bean对应的类中声明对应的属性 privateTeacherDAOdao; B.为每个要注入的属性提供对应的标准封装setter方法(访问器) publicvoidsetDao(TeacherDAOdao){ this.dao=dao; } C.必须保障引入的对象是Spring控制的Bean --声明引用类型的资源为Bean--> D.在Bean的属性注入中,使用ref引用对应的资源ref=”beanId/beanName” --setter注入--> --name: 属性名--> --value: 简单类型的值--> --ref: 引用别的Bean,beanId/beanName--> 5.P命名空间的使用【了解】 Spring2.5提供了一种简化配置格式,P命名空间支持 A.xml头信息中引入对p命名空间的支持 xmlns: p="http: //www.springframework.org/schema/p" B.将所有的属性注入property子元素全部修改为bean的属性 原始格式: p空间格式: p: propName="propValue"//注入简单类型 p: propName-ref="beanId"//注入引用类型 > 6.SpEl【了解】 Spring3.0引入全新的SpEL(SpringExpressionLanguage)Spring表达式语言,支持各种格式语法格式,所有的属性注入全部使用value属性名 详情参考《Spring_表达式语言.pdf》 7.集合注入【了解】 Spring支持为Bean注入集合 List Set Map Properties 团队开发【了解】【操作】 1.团队开发时,每个独立的模块制作成一个独立的配置文件 命名格式: applicationContext-模块名.xml模块名使用全小写字母 2.某个配置文件中,使用其他配置文件中的Bean,导入对应的配置文件 3.Bean的冲突问题 A.当多个配置中具有相同id的Bean时,后加载的替换先加载的(由配置文件的加载顺序决定) B.当多个配置中具有相同id的Bean时,import导入相当于拷贝(由配置文件的Bean定义顺序决定) C.同一个配置文件中id不能重复,不同配置文件,同id依赖上述规则相互覆盖 4.当id名称比较复杂,或者定义名称过
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Spring 知识点 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)