1. 程式人生 > 其它 >spring專案遇到的小問題

spring專案遇到的小問題

技術標籤:javaspring boot

專案打包跳過測試

在這裡插入圖片描述

通過上下文的獲取配置類的地方需要延遲載入

	// 通過applicationContext上下文獲取Config類
	public static void setApplicationContext(ApplicationContext applicationContext) {
		config = applicationContext.getBean(Config.class);
	}
@Component
@PropertySource("classpath:/properties/camera.properties"
) public class InitialCamera implements InitializingBean { @Autowired private CameraController cameraController; @Value("${camera.ip}") private String ip; @Value("${camera.username}") private String username; @Value("${camera.password}") private
String password; @Value("${camera.channel}") private String channel; @Value("${camera.stream}") private String stream; @Value("${camera.pushPort}") private String pushPort; // 存放定時任務 private static Map<String, Long> _TaskMap = new
HashMap<>(); @Override public void afterPropertiesSet() throws Exception { // CameraPojo pojo = new CameraPojo(); // pojo.setIp(ip); // pojo.setUsername(username); // pojo.setPassword(password); // pojo.setChannel(channel); // pojo.setStream(stream); // pojo.setPushPort(pushPort); // // Map<String, Object> stringObjectMap = cameraController.getStringObjectMap(pojo); // System.out.println(stringObjectMap); // 新增定時任務 延遲20s啟動不然可能啟動失敗 _TaskMap.put("task-1", Instant.now().plusSeconds(20).toEpochMilli()); // 延遲 3s // 呼叫無限迴圈實現延遲任務 new Thread( ) { @Override public void run() { loopTask(); } }.start(); } /** * 無限迴圈實現延遲任務 */ public void loopTask() { Long itemLong = 0L; while (true) { Iterator it = _TaskMap.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); itemLong = (Long) entry.getValue(); // 有任務需要執行 if (Instant.now().toEpochMilli() >= itemLong) { // 延遲任務,業務邏輯執行 System.out.println("執行任務:" + entry.getKey() + " ,執行時間:" + LocalDateTime.now()); // 刪除任務 CameraPojo pojo = new CameraPojo(); pojo.setIp(ip); pojo.setUsername(username); pojo.setPassword(password); pojo.setChannel(channel); pojo.setStream(stream); pojo.setPushPort(pushPort); Map<String, Object> stringObjectMap = cameraController.getStringObjectMap(pojo); System.out.println(stringObjectMap); _TaskMap.remove(entry.getKey()); } } } } }