第一章:认识Spring
spring思维导图
01p/102p Spring认识框架
02p/102p Spring官网浏览以及资源介绍
03p/102p 框架内部模块
第二章 IoC控制反转
04p/102p IoC概念
05p/102p 创建对象的方式
06p/102p IoC的实现技术
07p/102p 第一个例子创建对象
08p/102p 创建spring配置文件
09p/102p 创建容器对象ApplicaitonContext【拿到spring创建的对象】
@Test
public void test02(){
String config = "beans.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
SomeService service = (SomeService) ac.getBean("someService");
service.doSome();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
10p/102p spring创建对象的时机
11p/102p 获取容器中对象信息的api
@Test
public void test03(){
String config = "beans.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(config);
//获取容器中定义的对象的数量
int nums = ac.getBeanDefinitionCount();
System.out.println("容器中定义的对象数量是:"+nums);
//获取容器中定义的对象的名称
String names[] = ac.getBeanDefinitionNames();
for (String name:names){
System.out.println(name);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
12p/102p 创建非自定义对象
13p/102p 设值注入概念【注入就是赋值】
14p/102p 简单类型的设值注入实现
15p/102p 单元测试junit
就是因为在main文件中测试不方便,不能独立测试每一个方法,所以提出单元测试
16p/102p 设值注入【set注入】的注意事项
17p/102p 设值注入只是使用set方法
18p/102p 引用类型的设值注入
19p/102p 构造注入
20p/102p 构造注入创建文件对象
21p/102p 复习第一天内容【思维导图】
22p/102p 复习IoC
23p/102p IoC作业
24p/102p 自动注入byName
简化对于引用类型的重复赋值,减少冗余
25p/102p 自动注入byType
26p/102p 为什么使用多配置文件
大型项目中,需要多个配置文件。
27p/102p 包含关系的配置文件
28p/102p 注解的使用步骤
29p/102p Component注解使用
30p/102p 组件扫描器
31p/102p 多注解项目分层
不清楚要用上面三个注解的情况就用@Component。
32p/102p 扫描多个包的方法
33p/102p 简单类型属性赋值
34p/102p 引用类型属性赋值AutoWired自动注入,使用byType
步骤:首先扫描配置文件ApplicaitonContext,使用组件扫描器扫描base-package,创建包中所有对象,根据其中的注解注入【赋值】。
35p/102p 引用类型属性赋值AutoWired自动注入,使用byName
比较
1
36p/102p 引用类型AutoWired的required属性
37p/102p 引用类型AutoWired的required属性推荐使用默认值true
使用true, 尽早解决程序中的问题,报错。
38p/102p 引用类型Resource
Resource是来自于JDK中的注解,不是来自于spring的。
39p/102p xml配置文件和注解的对比
经常改的就是使用xml配置文件、不经常改的就使用注解。
注解为主,配置文件为辅
注解 | 配置文件 |
---|---|
快,方便 | |
比较乱 |
40p/102p 复习【控制反转】
41p/102p 复习动态代理的实现方式
42p/102p 用注解实现Ioc作业
1、加入依赖
2、创建类,在类中加入注解
3、声名组件扫描器
43-45p/102p 使用动态代理实现一个功能增强
46p/102p AOP面向切面编程【底层的实现就是动态代理】
动态代理很灵活【很难掌握,所以经过规范化,形成了】————>AOP面向切面编程
47p/102p 理解面向切面编程
48p/102p 术语和AOP实现框架
一个切面的三个要素
49p/102p 【切面的执行时间】aspectj的5个通知注解
50p/102p 【切面的执行位置】切入点表达式语法
51p/102p 切入点表达式事例
52p/102p 创建maven项目
实现AOP的方法:动态代理——————>使用框架aspectj实现
53p/102p aspectj实现aop步骤
54p/102p aspectj实现【创建切面类和配置文件】
步骤2:加入依赖
步骤3:创建目标类,接口和它的实现类
步骤 4:创建切面类
步骤5:创建xml配置文件,把对象交给spring容器来管理。
1、 由spring容器来进行目标对象和切面对象的创建。、
2、声名自动代理生成器,就不需要使用proxy手动创建代理对象了
55p/102p 目标类有接口是动态代理
56p/102p 切入点表达式的多种写法
演示错误的切面表达式
57p/102p 复习aop【思维导图复习】
58p/102p 复习aspectj【思维导图复习】
59p/102p JointPoint
测试:
60p/102p 后置通知AfterReturning
留有疑问:如果是返回值类型是自定义对象,难么会改变吗?
61p/102p 环绕通知Around
环绕通知类似于JDK动态代理的InvocationHandler接口
62p/102p 环绕通知Around的功能演示
环绕通知Around控制目标方法是否执行
环绕通知Around修改目标方法执行结果
环绕通知可以处理事务,在目标方法之前开启事务,执行目标方法,在目标方法之后提交事务。
63p/102p 异常通知【了解】
64p/102p 最终通知【了解】
65p/102p PointCut注解【辅助注解】
66p/102p 没有接口使用的aop是用cglib实现的
67p/102p 有接口也可以使用cglib实现
如果有接口,默认使用jdk动态代理,但是如果在有接口的情况下,想使用cglib接口的话,就在xml文件中加一句代码。
使用JDK动态代理的情况:
使用cglib动态代理
68p/102p spring集成mybatis的思路
首先回忆mymatis的实现步骤:
69-70p/102p 整合创建dao接口和mapper文件
创建实体类
创建dao接口
创建mapper映射文件
70p/102p 创建mybatis主配置文件
71p/102p 创建service类【实现业务分层】
72p/102p druid连接池的文档
73p/102p 配置DataSource
74p/102p 配置SqlSessionFactoryBean
出bug了,原因如下:
修改之后依然报错,暂时先放着,往后学习其他内容。
75p/102p 配置Dao类
注意在spring和mybatis整合时,spring配置文件中需要创建的对象是:数据源、Factory、dao三大类。
76p/102p 测试容器中的Service和dao对象
实际上最重点的就是配置文件中的三个bean,
第一个是数据源:datasource
第二个是sqlSessionFactory,通过myDataSource和mybatis主文件,就能创建出sqlSessionFactory对象。
第三个bean是:
77p/102p 使用属性配置文件
目前为止就是所有mybatis和spring的整合。必须会。
78-79p/102p 复习aop、整合mybatis和spring
什么时候考虑使用aop?
就是在你要对原有功能做一个功能增强的时候。
要给项目中的多个类增加一个相同的功能的时候
要给业务方法增加事务,日志输出时。
80p/102p 处理事务的问题
81p/102p 统一处理事务的优势
82p/102p spring处理事务的统一方式
83p/102p spring控制事务的三个方面
以下三个方面中最重要的是事务的传播行为,接下来是事务的隔离级别,然后是事务的超时时间。
required
support
required_new
84p/102p spring控制事务的三个方面【第三方面:事务的传播行为】
85p/102p spring控制事务-通过电商案例演示spring处理事务【创建实体类】
86p/102p spring控制事务-通过电商案例演示spring处理事务【创建dao类】
87p/102p spring控制事务-通过电商案例演示spring处理事务【创建dao类对应的xml映射文件】
88p/102p spring控制事务-通过电商案例演示spring处理事务【创建配置文件】
89p/102p spring控制事务-通过电商案例演示spring处理事务【测试buy方法】
90p/102p spring控制事务-通过电商案例演示spring处理事务【通过aop给buy方法添加事务】
91p/102p spring控制事务-通过电商案例演示spring处理事务【注解使用事例】
92p/102p spring控制事务-通过电商案例演示spring处理事务【@Transactional使用的技巧】
93p/102p 大型项目中怎么做事务【通过aspectj】
94p/102p 配置方法的事务属性【通过通配符,为很多的方法添加事务】
95p/102p 配置aop
要熟悉配置事务的两种方式,一种是注解方案,另一种是使用aspectj框架,在spring中配置,这种方式业务方法和配置完全分离。
96p/102p 解释aop的配置切入点表达式
97p/102p 搭建Web项目环境
98p/102p 创建页面
99p/102p 创建Servlet
创建成功了,但是依然报错,没找出问题。妈的
。
100p/102p 配置监听器
加入依赖
在web.xml中注册监听器
101p/102p 监听器源代码
102p/102p 工具类使用
最一个项目只需要记住下面就可以了。