需求:
需要实现,在启动服务后,打开服务指定页面;
实现
考虑在服务启动类中,获取服务ip和端口,项目路径等信息;拼接指定网址页面;
代码:
以服务启动后,打开swagger接口页面;
打开浏览器,需要区分一下系统:
获取操作系统的名字
System.getProperty("os.name", "")
参考代码如下
private static void openBrowse(String url) throws Exception {
String osName = System.getProperty("os.name", "");
if (osName.startsWith("Mac OS")) {
//苹果的打开方式
Class fileMgr = Class.forName("com.apple.eio.FileManager");
Method openURL = fileMgr.getDeclaredMethod("openURL", new Class[] { String.class });
openURL.invoke(null, new Object[] { url });
} else if (osName.startsWith("Windows")) {
//windows的打开方式。
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
} else {
// Unix or Linux的打开方式
String[] browsers = { "firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape" };
String browser = null;
for (int count = 0; count < browsers.length && browser == null; count++)
if (Runtime.getRuntime().exec(new String[] { "which", browsers[count] }).waitFor() == 0)
browser = browsers[count];
if (browser == null)
throw new Exception("Could not find web browser");
else
//这个值在上面已经成功的得到了一个进程。
Runtime.getRuntime().exec(new String[] { browser, url });
}
}
在启动类获取环境属性:只有使用
ConfigurableApplicationContext
获取到指定属性后,使用String,format格式化字符串;
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext application = SpringApplication.run(N3AgentBooter.class, args);
Environment env = application.getEnvironment();
String ip = InetAddress.getLocalHost().getHostAddress();
String port = env.getProperty("server.port");
String path = env.getProperty("server.contextPath");
String url = String.format("http:%s:%s/%s/swagger-ui.html",ip,port,path);
openBrowse(url);
}
注意
获取path属性时,参数要根据时间情况来定;
如:
String path = env.getProperty("server.contextPath");
或
String path = env.getProperty("server.servlet.context-path");