随笔分类 - Spring
摘要:简单的场景是基于接口层面对数据实现权限校验。 1. Spel 简单使用 package com.example.demo; import lombok.Builder; import lombok.Data; import org.assertj.core.util.Lists; import or
阅读全文
摘要:简单研究下spring 长轮训 DeferredResult 的用法以及简单的原理。 如果让自己设计,可能就是会用一些异步+spring的扩展机制来实现。 1. DeferredResult简单用法 1. 新建测试类 package cn.qz.template.controller; import
阅读全文
摘要:简单了解下其用法。 1. JDK9的Reactive Stream 用法 响应式流,和发布订阅者模式一样,只不过订阅者可以自己控制生产者发送数据的速度。 1. 背压 背压是一种常用策略,使得发布者拥有无限制的缓冲区存储元素,用于确保发布者发布元素太快时,不会去压制订阅者。举个例子就是消费者需要水的时
阅读全文
摘要:在阅读Spring、SpringMVC 源码的时候经常看到这几个类,简单总结下这几个工具类的核心使用方法。 1. ResolvableType 直译过来就是可解析类型。 实际是对java自带的Type 的一层包装,用于解析各种参数以及泛型、泛型实际类型等。Type 主要继承关系如下: 主要类如下:
阅读全文
摘要:在研究ServletRequest 以及 ServletResponse 等注入的过程中,发现还有一个ObjectFactory 对象,简单研究下其使用以及原理。 1. ObjectFactory使用 下面从两种方式研究其使用, 一种是接口, 一种是类。 1. 主要代码 (1) 类的方式 packa
阅读全文
摘要:简单理解下其事务传播机制的体现以及生效原理。 1. mysql 和 jdbc 提供的保存点 在看事务源码的过程中发现有个savepoint 的一操作,简单研究下其使用。 1. mysql 提供的savepoint start TRANSACTION; SELECT * FROM `message`
阅读全文
摘要:今天在研究代码的过程中发现@Value 注解也走的是@Autowired 自动注入的流程, 接下来研究@Autowired 和 @Resource 的逻辑。 1. 自动注入 这里的自动注入说的是setter修饰的属性的自动注入,和@Autowired、@Resource 修饰的属性无关。两个的逻辑走
阅读全文
摘要:两者都是后置处理器,一个是针对BeanFactory,也就是对象工厂,一个是针对Bean,也就是容器中的对象。后置处理器的作用就是处理一些创建完成之后的操作,比如BeanFactoryPostProcessor 用于动态的向容器注册一些Bean; BeanPostProcessor 用于扩展Bean
阅读全文
摘要:Spring 的源码一般从@EnableXX 开始看,然后会导入@Enable 一般通过@Import 导入一些相关的配置类。 0. 前沿 ACID Atomicity Consistency Isolation Durabiliry - 原子性 事务要么全做要么不做- 一致性 事务前后的状态是一致
阅读全文
摘要:在Web项目中经常需要验证前台的参数,比如验证param != null 或者验证param 的长度、集合的大小等等。一种办法就是手动验证,那就是写大量的if代码块,另一种就是使用现成的validation。 @Valid 注解位于包 javax.validation; @Validated 注解位
阅读全文
摘要:写在前面,@Configuration注解创建对象可以使用静态方法,也可以使用实例方法。 如果使用静态方法,获取对象getBean()的时候不会创建@Configuration 配置类本身,如果是实例方法,获取bean需要先创建配置类自己,然后反射创建获取的bean。 1. 测试 1. 类信息 Us
阅读全文
摘要:@Import 的作用: @Import用来导入@Configuration注解的配置类、注入普通类、导入ImportSelector的实现类或导入ImportBeanDefinitionRegistrar的实现类。源码如下: package org.springframework.context.
阅读全文
摘要:之前研究了AOP代理对象的创建过程以及注入到Spring的过程,接下来研究AOP的调用过程。 0. 代码同上一节的测试代码 1. pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO
阅读全文
摘要:SpringAOP的核心首先是创建代理对象存入SpringIoC容器中,然后就是调用的时候使用责任链模式进行调用。首先研究SpringAOP创建代理对象的机制。 在Spring的AOP实现中,使用的核心技术是代理技术,而这种动态代理实际上是JDK的一个特性(1.3)。基于JDK动态代理的target
阅读全文
摘要:OOP 面向对象编程,AOP(Aspect-Oriented Programming) 面向切面编程。 官方文档: https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop 1. AOP简介 主
阅读全文
摘要:spring可以解决属性注入循环依赖,默认不能解决构造器注入循环依赖。 spring创建对象分两步,①初始化实例对象,②初始化对象属性。 spring循环依赖,最初引用的就是半成品,也就是只初始化示例对象,还没有初始化对象属性。 1. 循环依赖导致系统启动失败的情况 发生循环依赖一般是在构造方法中注
阅读全文
摘要:1.ApplicationContext的初始化以及销毁 对于BeanFactory也有一个初始化和销毁关闭的过程,比如编程式的容器如下: AnnotationConfigApplicationContext applicationContext = new AnnotationConfigAppl
阅读全文
摘要:之前研究了IoC容器的初始化过程,这个过程完成的主要工作是在IoC容器中建立BeanDefinition数据映射。在此过程中并没有看到IoC容器对Bean依赖关系进行注入,接下来研究IoC容器是怎样进行依赖注入的。 首先注意依赖注入发生在第一次向容器索要对象时。对于ApplicationContex
阅读全文
摘要:1. 简介 IOC:Inversion of Control 也称为依赖倒置原理(Dependency Inversion Principle):对象依赖关系的管理被反转了,对象之间的依赖关系由IoC容器进行管理,并且IoC完成对象的注入。 SpringIoC:包含了最为基本的IoC容器BeanFa
阅读全文
摘要:Spring生态网: https://spring.io/ 1. 简介 可以把IOC和AOP理解为Spring的Kernel。通过IOC管理POJO对象以及它们之间的耦合关系;通过AOP以动态和非侵入式的方式来增强服务的功能。 IOC:Inversion of Control 也称为依赖倒置原理(D
阅读全文