之前我們用SSM或者SSH進行JAVA WEB開發的時候,IDEA 需要配置Tomcat然後把項目放到tomcat運行,tomcat啟動的時候會自動打開瀏覽器去訪問項目,但是SpringBoot是內嵌tomcat的,項目啟動成功後無法自主訪問,需要我們手動打開瀏覽器輸入url訪問,我覺得這樣很不習慣... ...
之前我們用SSM或者SSH進行JAVA WEB開發的時候,IDEA 需要配置Tomcat然後把項目放到tomcat運行,tomcat啟動的時候會自動打開瀏覽器去訪問項目,但是SpringBoot是內嵌tomcat的,項目啟動成功後無法自主訪問,需要我們手動打開瀏覽器輸入url訪問,我覺得這樣很不習慣所以研究了一下
具體實現方案
我想做成一個通用的啟動,所以可以隨手配置是否需要啟動是打開瀏覽器
Mac 電腦
- 屬性文件中添加對應屬性
#運行項目後是否在瀏覽器中打開瀏覽器
openProject:
isOpen: true #是否打開瀏覽器運行
cmd: open -a #運行命令
web:
openUrl: http://localhost:8989/ #項目要運行url
googleExcute: GoogleChrome #運行的瀏覽器
這裡我的電腦是Mac 所以需要使用這個open -a 命令window不需要這個屬性還有這個googleExcute表示瀏覽器名稱預設Mac 瀏覽器名稱是有空格,請把這個app名字空格去掉且不能有種中文,否則使用open -a 命令無效無法打開
通過定義屬性配置文件達到可以定製化,隨手關閉
- 編寫自己的CommandRunner類實現CommandLineRunner介面的run方法,這個方法會在項目啟動後制動執行
package com.fashvn.ctmsdata.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class CommandRunner implements CommandLineRunner {
@Value("${openProject.web.openUrl}")
private String openUrl;
@Value("${openProject.isOpen}")
private boolean isOpen;
@Value("${openProject.cmd}")
private String cmd;
@Value("${openProject.web.googleExcute}")
private String googleExcutePath;
@Override
public void run(String... args) throws Exception {
if (isOpen) {
String runCmd = cmd+" "+googleExcutePath + " " +openUrl ;
log.info("運行的命令:{}",runCmd);
Runtime run = Runtime.getRuntime();
try {
run.exec(runCmd);
log.debug("啟動瀏覽器打開項目成功");
} catch (Exception e) {
e.printStackTrace();
log.error("啟動項目自動打開瀏覽器失敗:{}",e.getMessage());
}
}
}
}
window電腦
上圖只是運行命令不一樣,比mac簡單,只用改下自己電腦對應瀏覽器路徑就可以