其他杂项
系统基类
2.3 版本加入了 Entity 基类 和 DTO 基类,大家可以按需去继承和修改,代码路径
eladmin-common -> me.zhengjie.base
服务监控


异步线程池
该版本重写了spring默认线程池,代码地址:
eladmin-system -> me.zhengjie.config.AsyncTaskExecutePool
源码如下:
@Slf4j@Configurationpublic class AsyncTaskExecutePool implements AsyncConfigurer {//注入配置类private final AsyncTaskProperties config;public AsyncTaskExecutePool(AsyncTaskProperties config) {this.config = config;}@Overridepublic Executor getAsyncExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();//核心线程池大小executor.setCorePoolSize(config.getCorePoolSize());//最大线程数executor.setMaxPoolSize(config.getMaxPoolSize());//队列容量executor.setQueueCapacity(config.getQueueCapacity());//活跃时间executor.setKeepAliveSeconds(config.getKeepAliveSeconds());//线程名字前缀executor.setThreadNamePrefix("el-async-");// setRejectedExecutionHandler:当pool已经达到max size的时候,如何处理新任务// CallerRunsPolicy:不在新线程中执行任务,而是由调用者所在的线程来执行executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());executor.initialize();return executor;}@Overridepublic AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {return (throwable, method, objects) -> {log.error("===="+throwable.getMessage()+"====", throwable);log.error("exception method:"+method.getName());};}}
使用方式如下
// 在 service 的方法上使用注解@Async
线程池工具类
通过该工具类可以快速创建一个线程池,目前在 定时任务模块中使用到 ,代码地址:
eladmin-system -> me.zhengjie.config.ThreadPoolExecutorUtil
源码如下:
/*** 用于获取自定义线程池* @author Zheng Jie* @date 2019年10月31日18:16:47*/public class ThreadPoolExecutorUtil {public static ThreadPoolExecutor getPoll(){AsyncTaskProperties properties = SpringContextHolder.getBean(AsyncTaskProperties.class);return new ThreadPoolExecutor(properties.getCorePoolSize(),properties.getMaxPoolSize(),properties.getKeepAliveSeconds(),TimeUnit.SECONDS,new ArrayBlockingQueue<>(properties.getQueueCapacity()),new TheadFactoryName());}}
使用方式:
private final static ThreadPoolExecutor executor = ThreadPoolExecutorUtil.getPoll();
