今天在看seata源碼的時候,看到server的的啓動能接收命令行參數,以前也經常用命令行啓動的方式,但是今天才真正的去了解這麼一個大神器:
JCommander
JCommander是一個用於解析命令行參數的Java框架,支持解析所有基本的數據類型,也支持將命令行解析成用戶自定義的類型,只需要寫一個轉變函數。
首先我們來看下seata的源碼:
@Parameter(names = "--help", help = true)
private boolean help;
@Parameter(names = {"--host", "-h"}, description = "The ip to register to registry center.", order = 1)
private String host;
@Parameter(names = {"--port", "-p"}, description = "The port to listen.", order = 2)
private int port = SERVER_DEFAULT_PORT;
@Parameter(names = {"--storeMode", "-m"}, description = "log store mode : file, db", order = 3)
private String storeMode;
@Parameter(names = {"--serverNode", "-n"}, description = "server node id, such as 1, 2, 3. default is 1", order = 4)
private int serverNode = SERVER_DEFAULT_NODE;
@Parameter(names = {"--seataEnv", "-e"}, description = "The name used for multi-configuration isolation.",
order = 5)
private String seataEnv;
這裏非常明顯的一個註解就是@Parameter,這個就是定義參數的核心內容了,所以如果我們想獲取命令行參數就需要用到他咯