spring schedule线程池配置实现原理
最近在做项目的时候,需要用到spring的定时任务模块做任务的调度。之前看网上的文章说,spring在默认的配置中都是使用的单线程来跑任务,如果某一个任务执行时间比较长,那么将会影响后续的任务执行,因此,大致看了下对应的源码,记录下来。
记录编程路上的点点滴滴
最近在做项目的时候,需要用到spring的定时任务模块做任务的调度。之前看网上的文章说,spring在默认的配置中都是使用的单线程来跑任务,如果某一个任务执行时间比较长,那么将会影响后续的任务执行,因此,大致看了下对应的源码,记录下来。
事情是这样的,在最近开发项目中,由于公司引入了一些内部开发的包,但是包中做了一个切面,切面的目的是拦截所有的service类中的所有的方法,并开启事务管理。这就导致了项目结构中,如果你想控制事务的粒度成了问题,并且在普通查询的时候,是不需要开启事务的。
最近在开发功能的时候,因为涉及到在做一个操作的时候,需要将之前已经有的数据做状态变更,但是由于单批次操作比较复杂,需要操作很多次数据库,因此在接口响应时间上超过了10s的时间,因此,将这部分耗时操作通过异步的方式来处理,这样的话,即可以保证数据的正确性,同时也可以在接口响应上缩短时间。
最近在做项目的时候,发现数据统计请求接口很慢,因此考虑将多个任务并行跑,这里主要采用的ForkJoinPool来实现,这是因为这个线程池可以配合parallelStream()方法来做自定义线程池,做任务线程的隔离。
在身份认证模块中,我们介绍了在认证完成之后,Authentication信息中会存储Authorities列表信息。Authentication信息经由AuthenticationManager对象获取并生成对应示例,然后将会被AccessDecisionManager读取,并用于授权使用。
在Spring Security中,包含了很多的类,Authentication主要管理授权以及授权后用户权限等信息,主要类包含以下几种:- “SecurityContextHolder“: 该类主要保存已经授权用户的详情信息
在spring cloud alibaba nacos的配置中,我们为了能够实现配置的动态刷新,@RefreshScope则是其中的一个解决方案。这篇文章将会从被@RefreshScope标记的bean从类信息搜集、创建、使用、刷新、销毁这样一个过程入手,记录Scope在spring中的工作原理。
在nacos自动配置刷新中,当我们使用spring-cloud做微服务开发的时候,主要通过两种方式自动刷新配置,这边文章主要介绍“@ConfigurationProperties“注解工作原理,以及解释自动刷新配置的工作机制。
在spring cloud alibaba中,配置中心是关键性的组件,能够提供便捷的配置管理以及更改配置后无需启动服务,就能够实现配置的自动更新。当然自动更新的操作并不是由nacos来完成,但是涉及以及配置更新通知,则是由nacos来实现的。这篇文章主要介绍nacos配置加载实现。