![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Sping
文章平均质量分 87
J.King
这个作者很懒,什么都没留下…
展开
-
面试题:SpringBoot 的自动装配是怎样实现的?
一、SringBoot 的自动装配实现:自动装配的入口是复合注解 @SpringBootApplication ,它主要是由以下三个注解组成:@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan装配步骤如下:@SpringBootConfiguration 里面是封装了一个@Configuration,作用就是将配置这个注解的类加载到 IOC 容器里面,主要是替换到 xml 配置文件@ComponentScan 他的原创 2022-04-08 00:49:41 · 2406 阅读 · 0 评论 -
Spring 事务总结
一、事务是什么事务是逻辑处理原子性的保证手段,通过使用事务控制,可以极大的避免出现逻辑处理失败导致的脏数据等问题。事务最重要的两个特性,是事务的传播级别和数据隔离级别。传播级别定义的是事务的控制范围,事务隔离级别定义的是事务在数据库读写方面的控制范围。二、事务的四大特性(ACID)原子性(Atomicity): 一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务原创 2022-03-16 23:07:42 · 1130 阅读 · 0 评论 -
Spring AOP 源码分析
一、寻找入口Spring 的 AOP 是通过接入 BeanPostProcessor 后置处理器开始的,它是 Spring IOC 容器经常使用到的一个特性,这个 Bean 后置处理器是一个监听器,可以监听触发的 Bean 声明周期事件。后置处理器向容器注册以后,容器中管理的 Bean 就具备了接受 IOC 容器时间回调的能力。BeanPostProcessor 的使用非常简单,只需要提供一个实现接口 BeanPostProcessor 的实现类,然后在 Bean 的配置文件中设置即可。1、BeanP原创 2022-03-07 22:18:34 · 200 阅读 · 1 评论 -
Spring AOP 概述
Spring AOP 应用场景AOP 是 OOP 的延续,是 Aspect Oriented Programming 的缩写,意思是面向切面编程。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP设计模式孜孜不倦追求的是调用者和被调用这之间的解耦,AOP 可以说也是这种目标的一种实现。我们现在做的一些非业务,如:日志、事务、安全等都会写在业务代码中(也即是说,这些非业务类横切与业务类),但这些代码往往是重复,复制-粘贴式的代码会给程序带来不便,AOP 就原创 2022-03-06 20:51:10 · 443 阅读 · 0 评论 -
Spring MVC 执行流程和九大组件
组件和流程概述我们首先引用《Spring in Action》上 的一张图来了解 Spring MVC 的核心组件和大致处理流程:从上图中看到①、DispatcherServlet 是 SpringMVC 中的前端控制器(Front Controller), 负责接收 Request 并将 Request 转发给对应的处理组件。② 、 HanlerMapping 是 SpringMVC 中 完 成 url 到 Controller 映 射 的 组 件 。 DispatcherServlet 接 收原创 2022-03-04 23:19:19 · 1470 阅读 · 0 评论 -
Spring 自动装配之依赖注入
依赖注入发生的时间当 Spring IOC 容器完成了 Bean 定义资源的定位、载入和解析注册以后,IOC 容器中已经管理类 Bean 定义的相关数据,但是此时 IOC 容器还没有对所管理的 Bean 进行依赖注入,依赖注入在以下两种情况发生:用户第一次调用 getBean()方法时,IOC 容器触发依赖注入。当用户在配置文件中将元素配置了 lazy-init=false 属性,即让容器在解析注册 Bean 定义 时进行预实例化,触发依赖注入BeanFactory 接口定义了 Spring I原创 2022-03-03 23:45:03 · 416 阅读 · 0 评论 -
IOC 容器初始化小结
IOC 容器初始化现在通过之前文章的源码分析,总结一下 IOC 容器的初始化的基本步骤:1、初始化的入口在容器实现中的reshfrsh()调用来完成。2、对 Bean 定义载入 IOC 容器使用的方法是 loadBeanDefinition(),其中大致过程如下: 通过 ResourceLoader来完成资源文件位置的定位,DefaultResourceLoader 是默认实现,同时上下文本身就给出了 ResourceLoader 的实现,可以从类路径,文件系统,URL等方式来确定资源位置。原创 2022-03-02 01:22:08 · 244 阅读 · 0 评论 -
基于 Annotation 的 IOC 容器的初始化
AnnotationSpring IOC 容器对于类级别的注解和类内部的注解分以下两种处理策略:类级别的注解:如@Component、@Repository、@Controller、@Service,都是添加在类上面的类级别注解,Spring 容器根据注解的过滤规 则扫描读取注解 Bean 定义类,并将其注册到 Spring IOC 容器中。类内部的注解:如@Autowire、@Value、@Resource , 都是添加在类内部的字段或者方法上的类内部注解,SpringIOC 容器通过 Bean原创 2022-02-28 22:02:57 · 150 阅读 · 0 评论 -
基于Xml 的 IOC 容器的初始化(三)注册
以下内容是基于基于Xml 的 IOC 容器的初始化注册,我们知道IOC容器的初始化过程大概可以分成,定位,加载,注册。IOC定位:基于 Xml 的 IOC 容器的初始化(一)定位IOC加载:基于Xml 的 IOC 容器的初始化(二)加载16、分配注册策略让我们继续跟踪程序的执行顺序,接下来我们来分析 DefaultBeanDefinitionDocumentReader 对 Bean 定 义转 换的 Document 对 象解 析的 流程 中, 在其 processBeanDefinition 方法原创 2022-02-28 01:12:05 · 159 阅读 · 0 评论 -
基于Xml 的 IOC 容器的初始化(二)加载 (下)
IOC 容器的初始化包括 BeanDefinition 的Resource定位、加载和注册这三个基本的过程。我们以 ApplicationContext 为例讲解, ApplicationContext 系列容器也许是我们最熟悉的,因为 Web 项目中使用的 XmlWebApplicationContext 就属于这个继承体系,还有 ClassPathXmlApplicationContext 等,其继承体系如下图所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2spC原创 2022-02-27 22:26:28 · 201 阅读 · 0 评论 -
基于Xml 的 IOC 容器的初始化(二)加载 (中)
以下是基于基于Xml 的 IOC 容器的初始化加载 (中), IOC 容器的初始化加载 (上)请看上篇 基于Xml 的 IOC 容器的初始化(二)加载 (上)7、解析配置文件路径XmlBeanDefinitionReader 通 过 调 用 ClassPathXmlApplicationContext 的 父 类 DefaultResourceLoader 的 getResource()方法获取要加载的资源,其源码如下://获取Resource的具体实现方法@Overridepublic Reso原创 2022-02-26 21:47:45 · 109 阅读 · 0 评论 -
Spring 核心容器类图
BeanFactorySpring Bean 的创建是典型的工厂模式,这一系列的 Bean 工厂,也即 IOC 容器为开发者管理对象 间的依赖关系提供了很多便利和基础服务,在 Spring 中有许多的 IOC 容器的实现供用户选择和使用, 其相互关系如下:其中 BeanFactory 作为最顶层的一个接口类,它定义了 IOC 容器的基本功能规范,BeanFactory 有三 个重要的子类:ListableBeanFactory、HierarchicalBeanFactory 和 AutowireCap原创 2022-02-23 23:14:33 · 694 阅读 · 0 评论 -
Spring 源码下载及构建技巧
Spring5源码下载注意事项首先你的JDK需要升级到1.8以上。。Spring3.0 开始,Spring 源码采用 github 托管,不再提供官网下载 链接。这里不做过多赘述,大家可自行去 github 网站下载,这里使用的版本下载链接为: https://github.com/spring-projects/spring-framework/archive/v5.0.2.RELEASE.zip,下载完成后, 解压源码包会看到以下文件目录:基于 Gradle 的源码构建技巧由于 Spirng5原创 2022-02-22 23:36:07 · 566 阅读 · 1 评论