1.@PostConstruct說明
被@PostConstruct修飾的方法會在服務器加載Servlet的時候運行,並且只會被服務器調用一次,類似於Serclet的inti()方法。被@PostConstruct修飾的方法會在構造函數之后,init()方法之前運行。
2.@PreDestroy說明
被@PreDestroy修飾的方法會在服務器卸載Servlet的時候運行,並且只會被服務器調用一次,類似於Servlet的destroy()方法。被@PreDestroy修飾的方法會在destroy()方法之后運行,在Servlet被徹底卸載之前。(詳見下面的程序實踐)
package com.yygx.flowinterface.service.impl; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import net.zoneland.uniflow.client.impl.SyncProcessServiceClient; import net.zoneland.uniflow.client.impl.SyncTaskServiceClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Repository; /** * * 流程引擎客戶端工具類 * @author wuhda * */ @Repository public class FlowClientUtil { private final static Logger LOGGER = LoggerFactory.getLogger(FlowClientUtil.class); /** * 流程類接口客戶端 */ private SyncProcessServiceClient processClient; /** * 任務類接口客戶端 */ private SyncTaskServiceClient taskClient; @PostConstruct public void init() { // 接入系統的賬號密碼,在流程管理平台(UniflowAdminConsole)上配置 String username = "ehr"; String password = "password"; // Uniflow的服務地址 String endpoint = "http://172.16.92.50:10081/UniflowControlCenter/rest"; // 構建流程類接口客戶端 processClient = new SyncProcessServiceClient(username, password); processClient.setServerAddress( endpoint + "/RestProcessService" ); // 構建任務類接口客戶端 taskClient = new SyncTaskServiceClient(username, password); taskClient.setServerAddress( endpoint + "/RestTaskService" ); } @PreDestroy public void close() { System.out.println("close client ..."); // 應用結束是最好關閉客戶端(內部有HttpClient的連接池) processClient.close(); taskClient.close(); } public SyncProcessServiceClient getProcessClient() { return processClient; } public void setProcessClient(SyncProcessServiceClient processClient) { this.processClient = processClient; } public SyncTaskServiceClient getTaskClient() { return taskClient; } public void setTaskClient(SyncTaskServiceClient taskClient) { this.taskClient = taskClient; } }