第一章:认识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();
    }

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);
        }
    }

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 工具类使用

最一个项目只需要记住下面就可以了。

完结:2021.6.26 18:00

更多推荐

2020最新Spring框架教程【IDEA版】-Spring框架从入门到精通