1、情况描述
使用springboot2多线程,线程类无法实现自动注入需要的bean,解决思路,通过工具类获取需要的bean
如下
package com.ps.uzkefu.apps.ctilink.handler;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.ps.uzkefu.apps.callcenter.entity.CallRecord;
import com.ps.uzkefu.apps.callcenter.service.CallRecordService;
import com.ps.uzkefu.apps.ctilink.init.ApplicationContextProvider;
import com.ps.uzkefu.apps.ctilink.ommodel.CallCdr;
import com.ps.uzkefu.apps.ctilink.ommodel.Cdr;
import com.ps.uzkefu.apps.ctilink.rediskey.CdrType;
import com.ps.uzkefu.apps.ctilink.rediskey.EventType;
import com.ps.uzkefu.apps.ctilink.rediskey.RedisKeyPrefix;
import com.ps.uzkefu.apps.oms.account.entity.User;
import com.ps.uzkefu.apps.oms.account.service.UserService;
import com.ps.uzkefu.util.UUIDUtil;
import com.ps.uzkefu.utils.PhoneModel;
import com.ps.uzkefu.utils.PhoneUtils;
import org.apache.commons.lang.StringUtils;
import org.redisson.api.RBucket;
import org.redisson.api.RedissonClient;
import java.util.Date;
import java.util.Objects;
/**
* Author:ZhuShangJin
* Date:2018/6/26
*/
public class CdrHandler implements Runnable {
public Cdr cdr;
//无法自动注入
public RedissonClient redissonClient;
//无法自动注入
public UserService userService;
//无法自动注入
public CallRecordService callRecordService;
public CdrHandler() {
//new的时候注入需要的bean
this.redissonClient = ApplicationContextProvider.getBean(RedissonClient.class);
this.userService = ApplicationContextProvider.getBean(UserService.class);
this.callRecordService = ApplicationContextProvider.getBean(CallRecordService.class);
}
public RedissonClient getRedissonClient() {
return redissonClient;
}
public void setRedissonClient(RedissonClient redissonClient) {
this.redissonClient = redissonClient;
}
public Cdr getCdr() {
return cdr;
}
public voi