Spring
张申傲
LangChain/Nacos/MyBatis 核心Contributor
展开
-
Spring 定时任务框架详解(1)——快速入门
一. 定时任务框架简介 Spring 定时任务框架主要基于JDK原生的线程池ScheduleExecutorService,仅通过一些简单的配置或者注解,即可实现强大的定时任务功能。 二.快速入门本例基于SpringBoot,以注解形式实现简单的Spring定时任务入门程序: Maven依赖: <parent> <groupId>org.s...原创 2018-07-18 16:44:04 · 525 阅读 · 0 评论 -
Spring源码学习笔记(8)——Bean的生命周期
Spring源码学习笔记(8)——Bean的生命周期一. Bean生命周期简介Bean的声明周期是指Bean从创建、初始化到销毁的整个过程。在Spring中,Bean的生命周期都是交给IoC容器管理的。Bean的主要生命周期主要有四个阶段:实例化属性赋值初始化销毁Spring的IoC容器在管理Bean生命周期的同时,也提供了多种方式实现Bean在不同生命周期阶段的扩展,下面分别进...原创 2018-09-29 17:09:20 · 379 阅读 · 0 评论 -
Spring源码学习笔记(9)——AOP
Spring源码学习笔记(9)——AOP一. 基于注解的AOP开发AOP的定义及一些术语相信大家已经很熟悉了,这里不再赘述。下面演示基于注解的Spring AOP开发。编写业务逻辑类@Componentpublic class SimpleCalculator { int divide(int x,int y){ return x / y; }}...原创 2018-10-09 17:03:15 · 386 阅读 · 0 评论 -
Spring源码学习笔记(10)——BeanFactoryPostProcessor
Spring源码学习笔记(10)——BeanFactoryPostProcessor一. 简介BeanFactoryPostProcessor支持对IoC容器内部的所有BeanDefinition进行定制化修改, 并且可以根据IoC容器内部的BeanFactory进行Bean属性值的适配。也就是说,Spring允许BeanFactoryPostProcessor在容器实例化任何其它bean之...原创 2018-10-10 16:08:50 · 316 阅读 · 0 评论 -
Spring源码学习笔记(13)——JDBC
Spring源码学习笔记(12)——JDBCSpring提供了JdbcTemplate模板类来操作数据库,JdbcTemplate是对原生JDBC进行了全面的封装,统一处理了数据库连接的获取与释放等操作,使用起来比较方便。本节分析JdbcTemplate的源码。一. execute()方法从简单更新语句入手使用JdbcTemplate的update()方法可以进行数据库的更新操作,源码...原创 2018-10-22 16:02:45 · 309 阅读 · 0 评论 -
Spring中Bean的创建流程
Spring中Bean的创建流程一. 核心代码BeanDefinition的解析在AbstractAutowireCapableBeanFactory的resolveBeforeInstantiation()中:@Nullableprotected Object resolveBeforeInstantiation(String beanName, RootBeanDefinition m...原创 2019-03-14 13:40:39 · 4425 阅读 · 1 评论 -
Spring解决循环依赖的思路
Spring解决循环依赖的思路一. 什么是循环依赖循环依赖也就是循环引用,指两个或多个对象互相持有对方的引用。通俗地说,假设在Spring中有3个Service Bean,分别为ServiceA、ServiceB和ServiceC,如果ServiceA引用了ServiceB,ServiceB引用了ServiceC,而ServiceC又引用了ServiceA,最终形成可一个环,这样就出现了循环依...原创 2019-03-13 12:31:36 · 478 阅读 · 0 评论 -
Spring源码深度解析(一)
Spring源码深度解析(一)一. 主要内容:概念描述Spring整体架构及主要模块概述二. 概念描述IoC :Inversion of Control,控制反转。到底反转了什么?假设具有依赖关系的对象如果要调用A的method()方法,而method方法又依赖于B的某些处理。原生方式:A a = new A();B b = new B();a.setB(b);a...原创 2019-05-06 13:31:56 · 519 阅读 · 0 评论 -
Spring源码深度解析(二)
Spring源码深度解析(二)一. 主要内容BeanFactory体系设计核心接口BeanDefinition加载流程设计思想总结二. BeanFactory体系设计BeanFactory是Spring中十分重要的接口,也是Spring IOC容器的顶级接口。它基于工厂模式,定义了最基本的IOC容器的功能,如获取Bean实例、查看Bean的类型和查看Bean是否存在等:在Be...原创 2019-05-06 14:53:55 · 887 阅读 · 0 评论 -
Spring的事务传播行为
Spring的事务传播行为一. 定义Spring定义了7中事务的传播行为,在TransactionDefinition类中:public interface TransactionDefinition { int PROPAGATION_REQUIRED = 0; int PROPAGATION_SUPPORTS = 1; int PROPAGATION_MANDATORY...原创 2019-05-17 11:26:51 · 177 阅读 · 0 评论 -
Spring源码学习笔记(7)——使用@Import导入组件
Spring源码学习笔记(7)——使用@Import导入组件一. @Import注解简介@Import注解的作用是导入其他的配置类或者组件,等同于在applicationContext.xml文件中添加如下配置<import/>在通过@Bean注解导入组件比较繁琐时,可以考虑通过@Import导入。@Import支持三种方式的导入:直接导入一个配置类或者Bean导入I...原创 2018-09-28 14:34:01 · 1027 阅读 · 0 评论 -
Spring源码学习笔记(12)——IoC容器启动流程
Spring源码学习笔记(12)——IoC容器启动流程本节主要详细分析IoC容器的启动和刷新流程一. refresh()方法IoC容器的启动和刷新方法在AbstractApplicationContext中定义,即refresh()方法:public void refresh() throws BeansException, IllegalStateException { sync...原创 2018-10-12 11:15:33 · 262 阅读 · 0 评论 -
Spring源码学习笔记(4)——注解扫描
Spring源码学习笔记(4)——注解扫描一. @ComponentScan注解基本使用@ComponentScan注解是Spring十分重要的一个注解,它代替了之前基于配置文件的模式下的标签:<context:component-scan>实现的功能完全一样,即扫描指定包下的组件,默认扫描标记了@Component、@Service、@Controller和@Repos...原创 2018-09-21 11:24:46 · 199 阅读 · 0 评论 -
Spring 定时任务框架详解(2)——核心类介绍
Spring 定时任务框架详解(2)——核心类介绍本篇主要介绍Spring定时任务框架涉及到的核心类及其功能TaskScheduler:Spring任务调度器的核心接口,定义了执行定时任务的主要方法,主要根据任务的不同触发方式调用不同的执行逻辑,其实现类都是对JDK原生的定时器或线程池组件进行包装,并扩展额外的功能。主要实现类如下: TimerManagerTaskScheduler:...原创 2018-07-18 19:16:15 · 652 阅读 · 0 评论 -
Spring 定时任务框架详解(3)——源码分析
本篇主要结合源码分析Spring定时任务框架。如前文所述,可通过@EnableScheduling注解开启定时任务调度,所以我们从@EnableScheduling注解开始:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Import(SchedulingConfiguration.class)@Docum...原创 2018-07-20 10:22:57 · 852 阅读 · 0 评论 -
Spring源码学习笔记(1)——容器的基本实现
Spring源码学习笔记(1)——容器的基本实现一. 实例代码Resource resource = new ClassPathResource("applicationContext.xml");XmlBeanFactory beanFactory = new XmlBeanFactory(resource);Object bean = beanFactory.getBean...原创 2018-09-10 15:52:04 · 336 阅读 · 0 评论 -
Spring源码学习笔记(2)——Bean的加载
Spring源码学习笔记(2)——Bean的加载一. Bean加载的核心流程前面大概分析了Spring读取解析配置文件,并加载BeanDefinition的过程。本节详细整理下Bean的加载过程。首先贴上核心代码protected <T> T doGetBean(final String name, @Nullable final Class<T> req...原创 2018-09-13 16:41:45 · 220 阅读 · 0 评论 -
Spring源码学习笔记(3)——容器的功能扩展
Spring源码学习笔记(3)——容器的功能扩展一. 引入ApplicationContext接口前面的介绍都是基于BeanFactory接口和它的默认实现XmlBeanFactory的,但是Spring体系中还有一个重要的接口:ApplicationContext。ApplicationContext在BeanFactory上进行了一些扩展,功能更为强大。可以理解为:BeanFac...原创 2018-09-14 17:04:36 · 184 阅读 · 0 评论 -
Spring源码学习笔记(5)——@Conditonal注解
Spring源码学习笔记(5)——@Conditonal注解一. @Conditonal注解基本使用简介@Conditonal是Spring中常用的一个注解,标记了该注解后,只有在满足@Conditonal中指定的所有条件后,才可以向容器中注入组件。接口信息@Conditonal只有一个属性,即一个Condition接口的数组,表示该@Conditonal注解需要满足的所有条件,...原创 2018-09-25 14:39:54 · 764 阅读 · 0 评论 -
Spring源码学习笔记(6)——REST服务的拦截
Spring源码学习笔记(6)——REST服务的拦截一. 拦截REST服务的几种方式拦截REST服务在很多情况下,我们需要在REST服务核心逻辑的前后,加入一些通用的额外处理,比如权限控制,日志记录和方法统计等。这时,我们可以对REST服务进行拦截,并织入我们的通用逻辑。拦截REST服务的方式有一下几种:Filter:过滤器Interceptor:拦截器Aspect:切面下面...原创 2018-09-26 16:55:04 · 297 阅读 · 0 评论 -
Spring源码学习笔记(11)——Event体系
Spring源码学习笔记(11)——Event体系一. 简介Event体系是Spring提供的一种重要的机制,支持以事件——监听器的模式同步或者异步处理业务逻辑,并在一定程度上降低业务之间的耦合。本篇主要介绍Event的使用方式及其运行原理。一. 基于接口的开发示例本节演示使用原生的接口实现Spring事件机制。自定义事件:public class SimpleEvent exten...原创 2018-10-11 14:17:59 · 225 阅读 · 0 评论 -
Spring AOP VS AspectJ
Spring AOP使用简单仅支持对Spring容器管理的Bean的增强,非Spring容器管理的对象(如业务POJO等)无法被拦截仅支持对方法级别的增强,无法对成员变量、getter&setter等进行增强动态代理类在运行时生成无法直接对方法内部调用进行增强无需引入额外的依赖和插件AspectJ使用相对复杂可以对项目中所有对象进行增强可以对类的方法、成员变量...原创 2019-07-07 12:24:13 · 329 阅读 · 0 评论