在写一个线程池工具类时,要用到线程池对象,于是想当然的加@autowire自动注入,发现无法注入。
原因:静态成员变量没有set方法,自动注入依赖set方法
解决:给静态成员变量加一个set 方法,set方法上不要用static关键字修饰
注意:工具类要加@component注解,交给spring容器管理
@Component
public class ThreadPoolUtil {
private static ThreadPoolTaskExecutor executor;
@Autowired
public void setExecutor(ThreadPoolTaskExecutor executor) {
ThreadPoolUtil.executor = executor;
}
public static void execute(Runnable command){
executor.execute(command);
}
public static <T> Future<T> submit(Callable<T> callable){
Future<T> future = executor.submit(callable);
return future;
}
public static String getString(){
return "hah";
}
}