改进这段代码package com.example.gms.demo.start; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.annotation.Configuration; import org.springframework.context.event.EventListener; import java.io.IOException; @Configuration public class AutoBrower { @EventListener({ApplicationReadyEvent.class}) public void applicationReadyEvent() { System.out.println("应用已经准备就绪 ... 启动浏览器"); String url = "http://localhost:8080"; Runtime runtime = Runtime.getRuntime(); try { runtime.exec("rundll32 url.dll,FileProtocolHandler " + url); } catch (IOException e) { e.printStackTrace(); } } }
时间: 2024-02-16 15:02:57 浏览: 163
基于Vue.js + Node.js开发的GMS游戏管理平台源码+项目部署说明.zip
这段代码是为了在Spring Boot应用启动后自动打开浏览器并访问指定的URL。从代码中可以看出这是通过监听ApplicationReadyEvent事件来实现的。
以下是一些改进建议:
1. 增加注释:在代码中增加注释可以更好地说明代码的作用和实现方式。
2. 使用日志:将System.out.println替换为日志输出,可以更好地记录应用的运行状态和调试信息。
3. 使用Desktop类打开浏览器:通过Desktop类可以更安全、更方便地打开系统默认浏览器并访问指定的URL,避免了使用Runtime.exec()方法可能存在的安全风险。
改进后的代码如下所示:
```
package com.example.gms.demo.start;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener;
import java.awt.*;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
@Configuration
public class AutoBrowser {
private static final Logger logger = LoggerFactory.getLogger(AutoBrowser.class);
@EventListener(ApplicationReadyEvent.class)
public void openBrowser() {
logger.info("应用已经准备就绪 ... 启动浏览器");
String url = "http://localhost:8080";
if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
try {
Desktop.getDesktop().browse(new URI(url));
} catch (IOException | URISyntaxException e) {
logger.error("打开浏览器失败!", e);
}
}
}
}
```
阅读全文