![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
文章平均质量分 63
knock_me
这个作者很懒,什么都没留下…
展开
-
Spring基础元注解@Target、@Retention、@Documented、@Inherited
用于指定当前注解被保留到什么阶段,一共三个阶段:.java文件 → .class文件 → 内存中的字节码。表明修饰的内容被javadoc工具记录。默认情况下,javadoc不包含注解。但是如果声明注解时指定了。,则它会被javadoc之类的工具处理,所以注解类型信息也会被包含在生成的文档中。修饰,那么其子类会自动继承此注解类的注解。如果一个注解类在定义的时候,被。表示当前类是一个注解类。Spring基础元注解。原创 2023-10-16 13:19:52 · 272 阅读 · 0 评论 -
static属性怎么自动注入@Value
通常,开发中的固定不变的配置项的值都存放在Qconfig中,使用时直接取出来。最常用到的就是非static的属性,配置文件名为。的文件中,存放的是Test类中的各个属性的值。非static属性,直接在属性上方添加。注解,即可给属性赋予对应的值。set方法不能为static。如果是static属性,一、非static属性。二、static属性。原创 2023-10-11 17:21:42 · 227 阅读 · 0 评论 -
为什么Spring中的bean默认都是单例模式?
Spring的bean默认单例,主要是为了避免反射的低效率对整体框架的性能造成太大的影响。原创 2022-09-25 14:51:21 · 2620 阅读 · 5 评论 -
Spring AOP的概念与原理解析
AOP,就是面向切面编程,它跟OOP(面向对象编程)提供了不同的抽象角度。在OOP中,我们以类Class作为基本单元。在AOP中,我们以切面Aspect作为基本单元。事实上,AOP是IOC的一个拓展功能,是在IOC的整个流程中的新增的一个拓展点。在BeanPostProcessor的后置处理方法中实现的。AOP通过动态代理来实现,运行时在内存中临时生成AOP动态代理类,因此被称为“运行时增强”。这样做便于减少系统的重复代码,降低模块间的耦合度,并有利于后期可操作性和可维护性。......原创 2022-07-24 17:30:21 · 353 阅读 · 0 评论 -
Spring源码之BeanDefinitionReader
BeanDefinitionReader是一个简单的接口,是用于读取Spring配置文件的内容,并转换为BeanDefinition。源代码如下。BeanDefinitionReader一共有4个实现类此外,源码中介绍说,一个bean definition reader并非一定要实现这个接口,原文如下。简单来说,BeanDefinitionReader这个接口提供了一个规范,但是并不强制执行。因此,我们可以在源码中找到并未实现此接口的bean definition reader。...原创 2022-07-11 19:07:20 · 961 阅读 · 2 评论 -
SpringBoot自动装配
什么是自动装配?解决了什么问题?《Spring实战》中给装配的定义是:创建应用对象之间协作关系的行为称为装配。也就是说,当A对象中的属性是B对象的时候,在实例化A时,需要对B进行实例化并将其引用赋值给A对应的属性。自动装配其实就是依赖注入的升级版本,是为了简化依赖注入的配置而生成的。在传统的依赖注入中,我们必须要明确给属性装配的是哪一个bean的引用,也可以叫做手动装配。在bean很多的情况下,是非常不方便的。因此,SpringBoot采用注解来进行自动装配。用户不需要知道属性具体要装配哪一个be原创 2022-03-23 19:48:58 · 544 阅读 · 0 评论 -
Spring事务
Spring事务的实现方式有两种:编程式事务管理:灵活但是难以维护声明式事务管理:可以将事务管理和业务代码分离,可以通过注解和XML配置管理事务Spring事务的优势:提供了跨不同事务API的一致编程模型为编程式事务管理提供了更简单的API支持声明式事务管理很好的集成了Spring的各种数据访问抽象Spring的事务是由AOP来实现的,流程如下:先做准备工作,解析各个方法上事务相关的属性,然后根据具体的属性来判断是否需要开始新的事务。当需要时,获取数据库的连接并关闭自动提交功能原创 2022-03-22 15:56:58 · 744 阅读 · 0 评论 -
Spring IOC概念与原理详解
IOC,Inversion Of Control,直译过来就是控制反转,它是一种设计思想。在传统的Java Se中,我们通过new来创建一个新的对象,是程序主动去创建依赖对象。而IOC有一个专门的容器来创建这些对象,也就是说,由IOC容器来进行对象的创建,将它们装配在一起,并管控其完整的生命周期。对象的创建由主动行为变成被动行为,控制权颠倒过来了,这也就是"控制反转"名称的由来。既然IOC是控制反转,那么到底哪些方面被反转了呢?主要是获取依赖对象的过程被反转了。控制被反转后,获取依赖对象的过程由自身管理原创 2022-03-20 00:21:55 · 622 阅读 · 0 评论 -
Spring是如何解决循环依赖的
Spring只能够解决单例模式下的setter循环依赖问题,通过三级缓存来解决。对于构造器的循环依赖和非单例模式的循环依赖无法解决。下面分析一下Spring是如何通过三级缓存来解决单例模式下setter的循环依赖问题的呢?缓存用途一级缓存singletonObjects存放完全初始化好的bean,从这里取出的bean可以直接使用二级缓存earlySingletonObjects半成品bean,尚未填充属性,用于解决循环依赖三级缓存SingletonFactories原创 2022-03-19 01:49:49 · 915 阅读 · 0 评论 -
Spring Bean的生命周期
1. 实例化Bean对于BeanFactory容器来说,因为它的懒加载策略,所以当用户向容器请求一个尚未初始化的bean,或者初始化bean的时候需要注入另外一个尚未初始化的依赖时,容器才会调用createBean()方法来进行Bean的实例化。对于ApplicationContext容器来说,在容器启动结束后,通过获取BeanDefination对象中的信息,实例化所有的Bean。2. 依赖注入(设置对象属性)实例化后的对象被封装在BeanWrapper对象中,接下来,Spring根据BeanDe原创 2022-03-18 09:57:05 · 475 阅读 · 0 评论