spring
文章平均质量分 65
路人丁.
这个作者很懒,什么都没留下…
展开
-
Spring @Pointcut切点详解
pointcut就是切点,通知需要在哪些方法处进行增强,在AspectJ中用@Pointcut注解表达式标注。原创 2023-05-11 22:26:37 · 1082 阅读 · 0 评论 -
Spring Advice是如何转换为MethodInterceptor
我们探讨了AOP中几个重要的概率,Advice作为通知抽象的标记接口,有多种实现类,在最终织入到Joinpoint中后都会转换为MethodInterceptor形成拦截器链,以便于统一调用invoke方法,那么这个过程是如何做到的呢?我们接下来就详细分析其过程。原创 2023-05-09 15:30:34 · 971 阅读 · 1 评论 -
事务与AOP的结合
与spring aop的结合有两种方式使用@Aspect注解拦截匹配的类 实现Advisor接口并加入到ioc容器中spring推荐用户使用AspectJ的方式,而其内部更多的是采用第二种方式,即实现Advisor,spring事务也是通过这种方式实现。实现spring事务中有一个重要的类BeanFactoryTransactionAttributeSourceAdvisor,其就是打通编程式事务和AOP的桥梁,从而实现了申明式事务。通过已有的基础认知,BeanFactoryTransact原创 2021-11-13 15:08:00 · 935 阅读 · 0 评论 -
事务API实现demo
业务开发中我们常常使用申明是事务,那么申明式事务到底是如何运作的呢,这就像一个黑盒,我们可以参考编程式事务的方式来了解其具体实现。只有一个事务操作public static DataSource getDs() { DruidDataSource ds = new DruidDataSource(); ds.setUsername("root"); ds.setPassword("root"); ds.setUrl("jdbc:mysql://192...原创 2021-11-13 15:04:11 · 693 阅读 · 0 评论 -
事务管理的两大工具类
TransactionSynchronizationManager和DataSourceUtils是事务管理中处理线程上下文信息及连接的重要工具。TransactionSynchronizationManagerTransactionSynchronizationManager内部主要使用ThreadLocal变量,将当前事务的信息绑定到线程,便于执行的过程中获取资源,以及处理事件回调。public abstract class TransactionSynchronizationManage原创 2021-11-13 15:02:38 · 761 阅读 · 0 评论 -
事务管理器的具体实现DataSourceTransactionManager
前文我们讨论了抽象的TransactionManager实现AbstractPlatformTransactionManager,其定义诸多模板方法,主要目的是处理事务的传播行为,在合适的时机挂起当前事务,本事务完成后重放挂起的事务,参见AbstractPlatformTransactionManager解析,而DataSourceTransactionManager作为抽象类的具体实现,就是实现了对与DB数据源如何创建事务,提交事务等等,也就是对抽象类中抽象方法的实现。doGetTra...原创 2021-11-13 14:59:38 · 2255 阅读 · 0 评论 -
AbstractPlatformTransactionManager抽象事务管理器分析
上文简单看了spring为了管理事务而定义的几个重要接口规范,见spring事务接口规范,而这些规范具体的执行,就是今天要分析的一个非常重要的执行类AbstractPlatformTransactionManager,其定义了事务的具体执行逻辑,把TransactionDefinition和TransactionStatus关联了起来。该类主要的行为:提供方法根据事务定义TransactionDefinition创建事务,并返回事务执行状态对象TransactionStatus 提供对事务传播行为原创 2021-11-13 14:49:00 · 1489 阅读 · 0 评论 -
spring事务接口规范
spring事务管理现阶段主要通过三个重要接口规范,TransactionDefinition事务定义,主要定义事务的名称,传播属性,事务隔离级别,是否只读,超时时间等;TransactionStatus事务执行中的状态,主要封装保存事务执行过程中的数据及状态;TransactionManager事务管理器,管理事务的执行(开启事务,提交或回滚事务)。TransactionDefiniton事务定义TransactionDefiniton规范是通过jdk8以上采用默认方法实现。主要定...原创 2021-11-13 14:38:54 · 1844 阅读 · 1 评论 -
Spring AOP名词解释Advice,Pointcut,Advisor,Joinpoint,Advised是什么?
Adviceadvice解释为通知,需要执行的增强逻辑方法。advice规范接口如图,分为了before,after等等,为什么没有around呢,因为是通过interceptor实现的。这里可以看出,AfterAdvice最终会被转换包装成MethodBeforeAdviceInterceptor实现类进行适配桥接,同理BeforeAdvice也会被包装成MethodBeforeAdviceInterceptor最终调用MethodIntercepter#invoke()方法进行适配。原创 2021-10-22 23:14:47 · 3522 阅读 · 2 评论 -
开发环境关闭@EnableScheduling
上一章我们分析了Spring定时任务Schedule的源码,这里我们在做一个控制定时任务的案例。 业务开发中经常使用spring的schedule作为应用定时任务,但是由于@EnableScheduling注解的滥用,导致项目中到处都可能加了该注解,若是在本项目中那么可以通过全局搜索进行排除,只留一个来作为项目内是否开启定时任务的开关,但是若项目中依赖的maven模块中,因为非源码里面添加的@EnableScheduling注解我们就没办法排除,为了在开发环...原创 2021-07-23 22:02:12 · 2016 阅读 · 2 评论 -
Spring-Schedule定时任务调度源码分析
定时任务是我们平常业务开发中常用的工具,凌晨统计数据,清理历史日志等等。spring非常友好的给我们提供了定时任务调度基础设施。我们平常经常这样配置定时任务:@EnableScheduling // 开启定时任务@Componentpublic class Sch01 { private final Logger logger = LoggerFactory.getLogger(getClass()); @Scheduled(cron = "* * * * * ...原创 2021-07-21 22:51:13 · 546 阅读 · 0 评论 -
spring-依赖查找
书接上回,IOC示例,在原有基础上详细罗列分析spring依赖查找的类型及范围,spring大致可以分为以下多种查找类型:单一类型的依赖查找 集合类型的依赖查找 层次性依赖查找 延迟依赖查找 安全依赖查找 内建可查找的依赖一:单一类型查找(BeanFactory)根据名称:getBean(String) getBean(String,Object...) 2.5-根据Bean类型: 事实查找get...原创 2021-06-23 22:11:16 · 554 阅读 · 0 评论 -
spring-bean-init(bean初始化方法及销毁方法顺序示例)
spring的生命周期方法给用户提供了多种扩展方式构建Bean时: 使用@PostConstruct 实现InitializingBean接口的afterPropertiesSet方法 自定义init-method(并在@Bean中或者xml中配置init-method)销毁Bean时: @PreDestroy destroy-method DisposableBean -- destroy构建Bean三者的执行顺序示例:public...原创 2021-06-21 21:00:56 · 848 阅读 · 1 评论 -
spring-bean-instantiation
Bean 实例化(Instantiation) • 常规方式 • 通过构造器(配置元信息:XML、Java 注解和 Java API ) • 通过静态工厂方法(配置元信息:XML 和 Java API ) • 通过 Bean 工厂方法(配置元信息:XML和 Java API ) • 通过 FactoryBean(配置元信息:XML、Java 注解和 Java API ) • 特殊方式 • 通过 ServiceLoaderFactoryBean(配置元信原创 2021-06-20 21:55:57 · 154 阅读 · 0 评论 -
spring-bean-definition
BeanDefinition的构建beanDefinition的构建通常有两种方式,一种是builder的方式,另一种可以通过Abstract原创 2021-06-17 23:27:13 · 159 阅读 · 0 评论 -
Spring IOC示例
1.spring ioc依赖查找通话xml的方式新建dependency-lookup-context.xml配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocat原创 2021-06-13 22:42:58 · 110 阅读 · 0 评论