Spring

一、IOC、DI和AOP思想提出

1.三种思想提出

 IOC理解
  • IOC(Inversion of Control):控制反转,就是将创建对象和对象之间的调用过程交给Spring进行管理
  • IOC的主要作用是为了降低程序或者系统的耦合度
  • 入门案例就是按照IOC来实现的
  • IOC底层使用XML、工厂模式、反射等方式实现

DI理解(Dependency Injection)

依赖注入,它指的就是Spring在管理某个类的时候会将该类依赖的属性注入(设置)进来,也就是说在创建对象的过程中,向类里面的属性中设置值。

注意:依赖注入不能单独存在,须在控制反转基础之上完成,用更通俗点的话来说,就是注入类里面的属性值,不能直接注入,须创建类的对象再完成注入。

二、Spring框架的诞生

1.Spring框架的诞生

spring官网:www.spring.io

2.Spring Framework技术栈

3.BeanFactory快速入门

4.ApplicationContext快速入门

 BeanFactory与ApplicationContext的关系

5.BeanFactory的继承体系

6.ApplicationContext的继承体系

注:

  • BeanFactory 才是 Spring 容器中的顶层接口。ApplicationContext 是它的子接口。
  • ApplicationContext:只要一读取配置文件,默认情况下就会创建对象。
  • BeanFactory:懒加载方式,什么时候使用什么时候创建对象。

三、基于XML的Spring应用

什么是Bean管理

​ Bean管理就是两个操作:(1) Spring创建对象; (2)Spring注入属性

Bean管理的两种方式

​ (1) 基于XML方式实现;(2) 基于注释实现

1.SpringBean的配置详解

2.Bean的生命周期

实例化->基础配置->初始化->销毁

基础配置又叫注入:对象属性注入就是@autowire等注解注入,存循环依赖问题,bean/容器属性注入指的是使用xxxAware接口的注入,用于通知加载指定资源

注:循环依赖有没有被解决主要是看单例不单例,单例的循环依赖都会被解决

项目的循环依赖一般就是两种情况:包冲突;单例代理导致的

@DependsOn注解主要用于指定当前bean所依赖的beans。任何被指定依赖的bean都由Spring保证在当前bean之前创建。在少数情况下,bean不是通过属性或构造函数参数显式依赖于另一个bean,但却需要要求另一个bean优先完成初始化,则可以使用@DependsOn这个注解。

@DependsOn既可以指定初始化依赖顺序,也可以指定bean相应的销毁执行顺序(仅在单例bean的情况下)。

可用于任何直接或间接带@Component注解的bean或在用@Bean注释的方法上。 如果使用的是xml配置,则需要使用<bean dependens on=“…”/>标签.

简单描述就是@DependsOn可以控制bean的创建、初始化(InitializingBean)、销毁方法执行顺序。

bean的作用范围

单例对象:scope=“singleton”
一个应用只有一个对象的实例。
生命周期:
       对象出生:当应用加载,创建容器时,对象就被创建了。
       对象活着:只要容器在,对象一直活着。
       对象死亡:当应用卸载,销毁容器时,对象就被销毁了。

多例对象:scope=“prototype”
每次访问对象时,都会重新创建对象实例。
生命周期:
       对象出生:当使用对象时,创建新的对象实例。
       对象活着:只要对象在使用中,就一直活着。
       对象死亡:当对象长时间不用时,被 java 的垃圾回收器回收了。

3.基于XML的Spring应用

(1)Spring的get方法

(2)Spring配置非自定义的Bean

3.Bean实例化的基本流程

4.Spring的工厂后处理器

5.Spring的bean后处理器

6.Spring Bean的生命周期

Bean实例属性填充

循环依赖

解决循环依赖问题:

①构造器的循环依赖: 这种依赖spring是处理不了的,直接抛出异常。
②单例模式下的setter循环依赖: 通过"三级缓存"处理循环依赖,能处理。
③多例模式下的setter循环依赖: 不能处理,会一直产生新的Bean,导致OOM。

第一步图,之后按照上述文字往二级和一级里放(图不截了,后续还有源码也不截了)

7.常用的Aware接口

8.Spring Ioc整体流程总结

9.Spring xml方式整合第三方框架

xml整合第三方框架有两种整合方案:

  • 不需要自定义名空间,不需要使用Spring的配置文件配置第三方框架本身内容,例如:MyBatis;     
  • 需要引入第三方框架命名空间,需要使用Spring的配置文件配置第三方框架本身内容,例如: Dubbo。

Spring整合MyBatis,之前已经在Spring中简单的配置了SqlSessionFactory,但是这不是正规的整合方式MyBatis提供了mybatis-spring.jar专门用于两大框架的整合。

Spring整合MyBatis的步骤如下:

  • 导入MyBatis整合Spring的相关坐标; (请见资料中的pom.xml)
  • 编写Mapper和Mapper.xml;
  • 配置SqlSessionFactoryBean和MapperScannerConfigurer;
  • 编写测试代码

Spring整合MyBatis的原理剖析:
整合包里提供了一个SqlSessionFactoryBean和一个扫描Mapper的配置对象,SqlSessionFactoryBean一旦被实例化,开始扫描Mapper并通过动态代理产生Mapper的实现类存储到Spring容器中。

相关的有如下四个类:

  • SqlSessionFactoryBean: 需要进行配置,用于提供SqlSessionFactory;
  • MapperScannerConfigurer: 需要进行配置,用于扫描指定mapper注册BeanDefinition;
  • MapperFactoryBean:Mapper的FactoryBean,获得指定Mapper时调用getObject方法
  • ClassPathMapperScanner: definitionsetAutowireMode(2) 修改了自动注入状态,所以MapperFactoryBean中的setSqlSessionFactory会自动注入进去。

 

四、基于注解的Spring应用

1.Bean的基本注解开发

2.Bean依赖注入注解开发

@Autowired 根据类型进行注入,如果统一类型的Bean有多个,尝试根据名字进行二次匹配,匹配不成功报错

@Qualifier("userDao2")//在此,在属性上需要结合@Autowired一起使用,作用是根据名称注入相应的Bean,如果是作用在方法的参数上并且根据名称注入,则只需要使用@Qualifier,如果根据类型注入,可以什么都不写

@Resource(name="userDao2") //不指定名称参数时,根据类型注入,指定名称就根据名称注入

3.非自定义Bean注解开发

4.Bean配置类的注解开发

5.Spring配置其他注解

6.Spring注解的解析原理

7.Spring注解方式整合第三方框架

五、Spring的AOP开发

1.AOP简介

2.基于xml配置的AOP

xml方式AOP快速入门

xml方式AOP配置详解

 ​​​​

xml方式AOP原理剖析

3.基于注解配置的AOP

注解方式AOP基本使用

 注解方式配置AOP详解

注解方式AOP原理剖析

六、基于AOP的声明式事务控制

1.Spring事务编程概述

2.搭建测试环境

3.基于xml的声明式事务控制

4.基于注解声明式事物控制

 七、Spring整合web环境

1.Spring整合web环境

(1)Javaweb三大组件及环境特点

(2)Spring整合web环境的思路及实现

(3)Spring的web开发组件spring-web

2.web层MVC框架思想与设计思路

八、SpringMVC框架

1.SpringMVC简介

(1)SpringMVC概述

(2)SpringMVC快速入门

(3)Controller中访问容器中的Bean
(4)SpringMVC关键组件浅析

2.SpringMVC的请求处理

(1)请求映射路径的配置

(2)请求数据的接收

3.Spring MVC的响应处理

4.Spring MVC的拦截器

5.SpringMVC的全注解开发

6.SpringMVC的组件原理剖析

7.SpringMVC的异常处理机制

(1)SpringMVC异常的处理流程

(2)SpringMVC的异常处理方式

(3)异常处理机制原理剖析
(4)SpringMVC常用的异常解析器

详细视频见b站黑马视频:151-SpringMVC框架-异常处理-常见的异常处理器【完结】_哔哩哔哩_bilibili

参考博客:Spring学习第3篇:Spring容器的基本使用_spring 容器-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值