1、异步回调工具类
import lombok.SneakyThrows;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* 异步回调工具类
*
* @author huxiang
*/
public class AsyncCallBackUtil {
public static void doCallBack(Callback callback) {
ExecutorService es = Executors.newSingleThreadExecutor();
Thread t = new Thread() {
@SneakyThrows
public void run() {
callback.doCallback();
}
};
es.execute(t);
es.shutdown();
}
}
public interface Callback {
void doCallback() throws InterruptedException;
}
应用:
AsyncCallBackUtil.doCallBack(() -> {
//业务代码异步执行
});
Spring容器工具类
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* Spring 容器工具类
*
* @author huxiang
*/
@Component
public class SpringUtils implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContextParam) throws BeansException {
applicationContext = applicationContextParam;
}
/**
* 手动获取spring ioc 容器 bean实例方法
*
* @param nameOrId bean key如未明确指定,则为bean ClassName首字母小写,如TestService -->testService; feign bean 需要使用全路径类名
* @return
*/
public static Object getBean(String nameOrId) {
return applicationContext.getBean(nameOrId);
}
}
应用:
ClusterClient clusterClient = (ClusterClient) SpringUtils.getBean("*****");