若依学习——异步日志(若依的两个线程池)(LoggerFactory.getLogger(“sys-user“))

若依在登录的时候会使用到线程池来进行日志记录如下所示。

在若依项目中配置了两个线程池,当项目启动时,线程池会初始化被spring管理。

不过若依项目中只是用到了第二个线程池,@Bean(name = "scheduledExecutorService")

后面我会讲怎么使用第一个线程池。

1、scheduledExecutorService

我往第二个线程池加了点注释如下

在异步任务管理器当中取了了该线程池,并且提供了两个方法,一个执行任务,第二个在项目结束时(通过这个@PreDestroy注解)会被调用,关闭该线程池。

停止项目时的日志

当我们需要使用该线程池时,只需要传入一个TimerTask类型的参数就行。如下图当中的

AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())

(方法的返回值是TimerTask类型)作为参数传入AsyncManager.me().execute()方法,

我们查看到AsyncFactory.recordLogininfor方法的返回值为TimerTask类型,这里返回了一个TimerTask()的匿名内部类,且重写了run接口,将需要执行的任务放在里面就行

这里获取了LoggerFactory.getLogger("sys-user")来打印日志,可在logback.xml找到相关配置

2、threadPoolTaskExecutor的使用

我们可以结合@EnableAsync和@Async来使用该线程池

首先,往原来定义好的线程池加入两行代码

然后定义自己的异步工厂,注意添加两个注解

其中@Async("threadPoolTaskExecutor")的参数为上面定义的线程池@Bean(name = "threadPoolTaskExecutor"),

需要执行什么任务就添加几个对应方法就行

现在我们在登录接口注入该工厂并且调用方法testThreadPoolTaskExecutor()。

进行登录,查看日志

测试通过😃

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值