SpringBoot启动后自动打开浏览器访问项目

以前咱们用SSM或者SSH进行JAVA WEB开发的时候,IDEA 须要配置Tomcat而后把项目放到tomcat运行,tomcat启动的时候会自动打开浏览器去访问项目,可是SpringBoot是内嵌tomcat的,项目启动成功后没法自主访问,须要咱们手动打开浏览器输入url访问,我以为这样很不习惯因此研究了一下java

具体实现方案

我想作成一个通用的启动,因此能够随手配置是否须要启动是打开浏览器web

Mac 电脑

  1. 属性文件中添加对应属性
#运行项目后是否在浏览器中打开浏览器
openProject:
  isOpen: true  #是否打开浏览器运行 
  cmd: open -a   #运行命令
  web:
    openUrl: http://localhost:8989/ #项目要运行url
    googleExcute: GoogleChrome  #运行的浏览器
这里个人电脑是Mac 因此须要使用这个open -a 命令window不须要这个属性还有这个googleExcute表示浏览器名称默认Mac 浏览器名称是有空格,请把这个app名字空格去掉且不能有种中文,不然使用open -a 命令无效没法打开

经过定义属性配置文件达到能够定制化,随手关闭spring

  1. 编写本身的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简单,只用改下本身电脑对应浏览器路径就能够浏览器