spring 三级缓存 详细过程 包含aop
时间: 2024-03-15 14:30:24 浏览: 29
Spring框架中的三级缓存主要是用于管理Bean对象的创建和销毁的过程。Spring框架中的Bean对象创建过程比较复杂,涉及到多个环节,因此需要使用三级缓存来优化Bean对象的创建过程,提高系统的性能。
三级缓存包括:
1. singletonObjects:单例池,缓存已经创建好的单例Bean对象。在第一级缓存中,如果Bean对象已经被创建过,则直接从单例池中获取。如果没有被创建过,则需要进行第二级和第三级缓存的操作。
2. earlySingletonObjects:早期单例池,缓存正在创建中的单例Bean对象。在第二级缓存中,如果Bean对象正在创建中,则需要从早期单例池中获取,避免重复创建。
3. singletonFactories:单例工厂池,缓存用于创建单例Bean对象的工厂对象。在第三级缓存中,如果没有从早期单例池中获取到正在创建中的Bean对象,则需要使用单例工厂池中的工厂对象进行创建。
Spring框架的AOP(面向切面编程)是基于动态代理的实现方式。Spring框架中的动态代理主要分为两种:JDK动态代理和CGLIB动态代理。JDK动态代理是基于接口的代理,CGLIB动态代理是基于继承的代理。
AOP是通过对Bean对象进行切面织入的方式实现的。Spring框架中的Bean对象是由容器管理的,因此需要在容器中进行AOP的配置和管理。Spring框架中的AOP主要涉及到以下几个概念:
1. 切面(Aspect):定义了要在哪些Bean对象上进行切面织入操作。
2. 连接点(Joinpoint):定义了在Bean对象的哪些方法上进行切面织入操作。
3. 通知(Advice):定义了要在连接点处执行的切面逻辑。
4. 切点(Pointcut):定义了连接点的匹配规则。
在Spring框架中,AOP的配置主要是通过AspectJ注解和XML配置文件的方式实现的。通过注解方式可以更加简洁明了地定义AOP的相关内容,而XML配置方式则更加灵活,可以满足更多的需求。无论采用哪种方式,都需要在Bean对象的定义中进行AOP的配置,以便在容器初始化时进行切面织入操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)