Spring知识点最全笔记
更新时间:2024-03-31 14:07:01 阅读量: 综合文库 文档下载
- 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,Spring JDBCTemplate
域模型层:实体类+DAO 服务层:远端调用(webservice)[类似技术RMI+JNDI] Spring提供的每层的服务技术 表现层:String MVC 业务逻辑层:Bean管理、AOP、事务管理 数据层:DAO支持抽象类,DAO模板技术JDBCTemplate 2. Spring的发展历程 创始人:Rod Johnson Expert One-to-One J2EE Design and Development(2002) 阐述了J2EE使用EJB开发设计的优点及解决方案 Expert One-to-One J2EE Development without EJB(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(Inversion of Control)控制反转 A:控制:控制的双方是什么?谁控制谁?
主控方:Spring
被控方:应用程序所使用的资源
(原始)应用程序控制自己执行操作需要使用的外部资源 (Spring)Spring控制整个程序中所需要使用的外部资源 B.反转:什么是反转?反转什么?
正向:应用程序直接调用资源
反向:应用程序依赖Spring为其提供资源
反转的是资源的控制权 应用程序由主动调用资源,变为被动的等待Spring提供资源 C.有什么好处?
正向缺点:应用程序控制的资源分布在程序的每一个地方 反向的优点:所有的资源都在Spring中,便于管理
总结:Spring反向控制应用程序所需要使用的外部资源。资源受Spring管理,利用率最大化。
2.Spring模型演化过程
A.基于分层设计 UserAction 使用UserService,new UserService() UserService 使用UserDAO,new UserDAO() 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获取
D.将应用程序需要使用的资源配置成Spring的Bean
补充:使用文件系统获取配置信息,要求配置文件在工程路径下(少用)
ApplicationContext ctx = new FileSystemXmlApplicationContext(\
DI【理解】【应用】【重点】 1.DI(Dependency Injection)依赖注入指应用程序依赖Spring为其提供运行时所需的资源 2.DI实例 A.在应用程序中声明要使用的资源 private String msg; B.为其提供setter访问器 public void setMsg(String msg) { this.msg = msg; } C. 在Bean配置中配置该资源对象具有某个属性,属性可以配置多个
3.IoC与DI区别 同一件事,站在不同角度上看待问题的不同描述 IoC:Spring立场 DI:应用程序立场
BeanFactory【了解】 1.BeanFactory是ApplicationContext的顶层父接口,使用BeanFactory接口也可以完成获取Bean的操作 2.操作步骤: A.初始化Resource对象 Resource res = new ClassPathResource(\ B.初始化BeanFactory对象 BeanFactory bf = new XmlBeanFactory(res); C.根据id名称获取Bean UserService service = (UserService) bf.getBean(\ 3.AppplicationContext与BeanFactory的区别 A.加载方式不同 AppplicationContext:立即加载,加载配置文件时即加载 BeanFactory:延迟加载,获取Bean实例时才加载 B.AppplicationContext具有更多的功能 国际化处理 事件传递 Bean自动装配 各种不同应用层的Context实现 注意:实际开发中,优先选择ApplicationContext对象,避免使用BeanFactory
4..Schema风格离线约束配置方式 A.拷贝访问路径 B.打开MyEclipse设置中的XML catalog选项 C.创建新的映射 D.选择对应的schema风格的约束文件 E.将key type修改为schema location F.将要配置的路径复制到key中
Bean配置(XML)【理解】【应用】【重点】
1.Bean对象初始化方式有三种 构造器初始化:
Bean对应的类必须提供一个默认无参可访问的构造方法
静态工厂初始化【了解】 提供一个工厂类,使用其中的静态方法获取对象
提供一个实例工厂类,使用其中的实例方法获取对象。由于该工厂类本身需要创建对象,因此该对象必须受Spring控制,所以必须配置该工厂类为Bean
2.Bean的作用域 Spring初始化的Bean默认为单例模式,如果想修改成非单例模式需要修改Bean的作用范围 3.Bean的生命周期 定义Bean初始化与销毁时的动作,属于回调方法配置 定义bean时指定两个回调方法,控制bean的初始化与销毁操作时执行的动作 A.提供对应要注入的属性 B.为每个要注入的属性提供对应的标准封装setter方法 C.在配置中为Bean指定要注入的属性,使用property元素 name=“属性名” value=”值” A.为某个Bean注入引用类型的值,首先在Bean对应的类中声明对应的属性 private TeacherDAO dao; B.为每个要注入的属性提供对应的标准封装setter方法 (访问器) public void setDao(TeacherDAO dao) { this.dao = dao; } C.必须保障引入的对象是Spring控制的Bean D.在Bean的属性注入中,使用ref引用对应的资源 ref=”beanId/beanName” 5.P命名空间的使用【了解】 Spring2.5提供了一种简化配置格式,P命名空间支持 A. xml头信息中引入对p命名空间的支持 xmlns:p=\ 格式一:配置在通知类别后面 格式二:配置在某个切面中,在当前切面范围内共享 范例: 4.通知类别 通知共有五种类别 before:在原始操作前运行 after: 在原始操作后运行,无论方法是否抛出异常 afterReturning:在原始操作后运行,只有方法正常结束才运行,抛出异常则不运行 afterThrowing:在原始操作中如果抛出异常,运行 around: 在原始操作前后运行,通过ProceedingJoinPoint对象调用procee()方法完成对原始操作的调用 //环绕通知 public void around(ProceedingJoinPoint pjp) throws Throwable{ System.out.println(\ //调用原始方法 pjp.proceed(); System.out.println(\ } 通知的配置格式 如果原始方法返回值为非void类型,则around方法内必须将原始方法调用的结果返回 原始方法返回值为void类型的,通知内获取的返回值统一为null public Object around(ProceedingJoinPoint pjp) throws Throwable{ Object res = pjp.proceed(args); return res; } B.afterReturning通知获取返回值 在通知方法的参数中,声明一个Object类型的参数,用于保存方法的返回值 public void afterReturning(JoinPoint jp,Object abc){ System.out.println(\ abc); } 在配置文件中,为afterReturning声明保存返回值的变量名 异常对象的获取方式与返回值很相似,声明变量,在配置中声明保存异常对象的变量名 AOP(注解)【理解】【应用】【重点】 1.AOP注解配置流程 A.开启AOP配置支持注解@aspectj 核心配置文件中添加以下配置,功能等同于注解配置Bean的自动扫描路径 B.将所有参与AOP配置的类声明为Spring控制的Bean 可以使用XML配置格式或注解格式 C.在切面类的类定义上方添加切面的声明 @Aspect public class MyAdvice {…} D.将切面类中的方法配置为指定类型的通知,配置时指定其切入点 @Before(\ public void before(JoinPoint jp) { System.out.println(\ } 2.配置公共的切入点 A.在切面类中声明一个方法(私有的),将该方法配置为切入点 @Pointcut(\ private void pt(){} B.使用配置的切入点 @Before(\引用切入点\ 格式:切面类名.方法名() 范例:@Before(\ pt ()\ 3.注解开发通知的通知类别 前置通知 @Before(value=\后置通知 @After(value=\抛出异常通知 @AfterThrowing(value=\返回后通知 @AfterReturning(value=\环绕通知 @Around(value=\4.注解格式AOP顺序 总体顺序由上到下为下列描述顺序 around before before around after after afterReturning 实际开发以最终运行顺序为准 5.返回值与异常对象的获取方式 @AfterReturning(value=\aa\ public void afterReturning(JoinPoint jp,Object aa){ System.out.println(\ } CGLIB【理解】【难点】 1.AOP内部工作原理是通过代理对象实现织入功能 对于有接口实现的对象使用JDK动态代理 对于无接口实现的对象使用Cglib动态代理 2.CGLIB(code generator library)代码生成库——第三方技术 作用:动态的生成字节码 CGLIB中的核心对象是Enhance对象,它的作用是创建一段动态的类字节码。 CGLIB可以对任意的类进行代理,JDK的代理只能对实现接口的类进行代理 public class MyCglibProxyObject implements MethodInterceptor { //提供一个方法用于创建Animal类的代理对象 public Animal createCglibProxyObject(){ //1.在内存中创建一个动态的类的字节码 Enhancer enhancer = new Enhancer(); //此时并没有做继承 //2.为其指定父类 //除了完成继承关系外,还将父类所有的方法名反射过来,并在自己的类中创建了这些方法 enhancer.setSuperclass(Animal.class); //3.指定其回调操作 enhancer.setCallback(this); //4.使用该类创建对象 return (Animal) enhancer.create(); } public Object intercept(Object proxy, Method method, Object[] args,MethodProxy methodProxy) throws Throwable { if(method.getName().equals(\ System.out.println(\吃前来个开胃菜\ } return methodProxy.invokeSupper(proxy, args); } } DAO模板类【了解】 1.Spring提供有DAO支持模板类,功能类似于Apache DBUtils JdbcTemplate HibernateTemplate SqlMapClientTemplate(过时) JpaTemplate (过时) 2.基础实例 A.导入jar包 核心包(4个) 日志(2个) jdbc模板支持(1个) spring-jdbc-3.2.0.RELEASE.jar 模板相关事务处理包(1个) spring-tx-3.2.0.RELEASE.jar 数据库连接驱动包 mysql-jdbc.jar B.JDBC模板类使用(编程式) //创建Spring对应的数据源对象 //数据源描述的是一系列的相关描述信息的封装对象 DriverManagerDataSource dataSource = new DriverManagerDataSource(); //为数据源对象提供数据库连接的相关数据(4个) dataSource.setDriverClassName(\ dataSource.setUrl(\ dataSource.setUsername(\ dataSource.setPassword(\ //创建JDBC模板类,需要使用数据源对象 JdbcTemplate template = new JdbcTemplate(dataSource); //执行添加语句 template.execute(\ template.execute(\ 3.使用Spring形式开发JDBCTemplate A.在DAO中声明JDBCTemplate变量 B.提供setter注入 C.将DAO声明为Bean,为其注入JDBCTemplate 4.数据源配置格式(3种) Spring内置的DataSource 5.用外部properties格式文件,输入参数 A.制作独立的属性文件jdbc.properties放置到src目录下,用于保存数据库连接的相关参数 driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/springdb jdbc_username=root password=root B.加载属性文件到Spring配置中 方式一:不推荐使用 方式二:推荐使用 注意:方式二可以使用通配符格式classpath:*.properties格式,一次加载所有的配置文件,但是,该方式要加载所有的系统配置,因此属性文件中的属性名不要与系统属性冲突。userName特别注意 C.将固定的参数改为引用属性文件中的参数 格式:${属性名} ${userName} ${url} ${password} ${jdbc_user} DAO支持抽象类【理解】【操作】 1.使用统一的DAO支持抽象类,可以简化开发过程,数据层实现类继承JdbcDaoSupport public class UserDAO extends JdbcDaoSupport{…} 2.为该类注入DataSource 3.在DAO实现类中使用this.getJdbcTemplate()获取模板对象 4.JdbcTemplate API 增删改 update(sql,Object... args) 查询数据为单一结果数据 queryFor* 获取简单类型数据 Long queryForLong(sql,Object... args) Interget queryForInt(sql,Object... args) Double queryForDouble(sql,Object... args) queryForObject 获取引用类型数据(不是全部) Object 标准DAO制作范例: public void add(UserModel um){ String sql = \ this.getJdbcTemplate().update(sql, um.getUserName(),um.getAge()); } public void delete(UserModel um){ String sql = \ this.getJdbcTemplate().update(sql, um.getUuid()); } public void update(UserModel um){ String sql = \ this.getJdbcTemplate().update(sql, um.getUserName(),um.getAge(),um.getUuid()); } //查询一共多少条数据 public Integer getCount(){ String sql = \ return this.getJdbcTemplate().queryForInt(sql); } //按照uuid查名字 public String getNameByUuid(Long uuid){ String sql = \ return this.getJdbcTemplate().queryForObject(sql,String.class,uuid); } //查询某个数据 public UserModel getByUuid(Long uuid){ String sql = \ RowMapper //查询全部数据 public List
正在阅读:
Spring知识点最全笔记03-31
中国公路学会科学技术奖项目.doc-宁夏交通运输厅.05-18
生态朗德鹅产业化开发项目可行性研究报告07-03
果化小学化学药品安全自查报告01-19
浙江省法制办行政执法考试在线题库10套真题试卷(4)04-18
美术英语 课后问答题和翻译归纳11-23
唇亡齿寒的意思及出处02-08
《竞选中队委》教案09-26
公司职业健康管理办法10-20
中国上空各卫星的现状以及收视前景11-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 知识点
- 最全
- 笔记
- Spring
- 《明史十讲》
- 回迁房房屋买卖合同2
- 山东肥城曹庄矿医院卓越360SOP
- 2018部编人教版小学二年级语文下册 课文22 小毛虫 公开课教学设
- 反贿赂承诺书
- HFC双向网络施工工艺标准及验收规范
- 关于举办第十一届中国美食节暨第九届国际美食博览会的通知
- 2012-2013学年培英高中高一地理期中试卷
- 慢病毒转染手册 - 图文
- 初三政治强化训练1
- 2015-2020年中国纳米碳酸钙市场监测及投资战略研究报告
- (解析版)为明实验中学2018-2019年初二上周练数学试卷(1).doc
- 《护理礼仪与人际沟通》补考题
- 三年级数学智力开发题3
- 湖南桃花江核电厂取、排水工程设计低水位计算项目投标书
- 2014远动监控技术实验
- 小学六年级语文毕业模拟考试卷3
- 江苏省苏州市2009年中考英语模拟试卷
- 中考数学试卷精选合辑60之60-中等学校招生考试数学试题及答案
- 九三班班级文化