package com.ssi.config; import com.ssi.model.TelecontrolModel; import com.ssi.websocket.WebSocketServiceForDebugApp; import org.apache.commons.lang3.concurrent.BasicThreadFactory; import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.core.annotation.Order; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; import java.util.concurrent.ExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; /** * 一些常用bean的配置 * * @author bin.Y * @version 2018/4/13 11:32 */ @Configuration @Order(1) public class BeanConfig { /** * 设置http请求超时时间 * @return */ @Bean public ClientHttpRequestFactory simpleClientHttpRequestFactory() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); factory.setConnectTimeout(15000); factory.setReadTimeout(30000); return factory; } /** * 自定义有超时时间的restTemplate * @param clientHttpRequestFactory * @return */ @Bean public RestTemplate restTemplate(ClientHttpRequestFactory clientHttpRequestFactory) { return new RestTemplate(clientHttpRequestFactory); } /** * 自定义线程执行器 * @return */ @Bean public ExecutorService executorService() { //io密集型 取 2 * Ncpu ; 计算密集型 取 1 + Ncpu return new ScheduledThreadPoolExecutor(Runtime.getRuntime().availableProcessors() * 4, new BasicThreadFactory.Builder().namingPattern("abs-event-schedule-pool-%d").daemon(true).build()); } /** * 设置WebSocketServiceForDebugApp的telecontrolModel * @return */ @Bean public ApplicationListener configProps(){ return (ContextRefreshedEvent contextRefreshedEvent) -> { TelecontrolModel telecontrolModel = contextRefreshedEvent.getApplicationContext().getBean(TelecontrolModel.class); WebSocketServiceForDebugApp.setTelecontrolModel(telecontrolModel); }; } }