Launch browser automatically after spring-boot webapp is ready

后端 未结 6 887
失恋的感觉
失恋的感觉 2020-12-15 09:43

How do I launch a browser automatically after starting the spring boot application.Is there any listener method callback to check if the webapp has been deployed and is read

6条回答
  •  隐瞒了意图╮
    2020-12-15 10:31

    If you package the application as a WAR file, configure an application server, like Tomcat, and restart the configured application server through your IDE, IDEs can automatically open a browser-tab.

    If you want to package your application as a JAR file, your IDE will not be able to open a web browser, so you have to open a web browser and type the desired link(localhost:8080). But in the developing phase, taking these boring steps might be very tedious.

    It is possible to open a browser with Java programming language after the spring-boot application gets ready. You can use the third-party library like Selenium or use the following code snippet.

    The code snippet to open a browser

    @EventListener({ApplicationReadyEvent.class})
    private void applicationReadyEvent()
    {
        if (Desktop.isDesktopSupported())
        {
            Desktop desktop = Desktop.getDesktop();
            try
            {
                desktop.browse(new URI(url));
            } catch (IOException | URISyntaxException e)
            {
                e.printStackTrace();
            }
        } else
        {
            Runtime runtime = Runtime.getRuntime();
            String[] command;
    
            String operatingSystemName = System.getProperty("os.name").toLowerCase();
            if (operatingSystemName.indexOf("nix") >= 0 || operatingSystemName.indexOf("nux") >= 0)
            {
                String[] browsers = {"opera", "google-chrome", "epiphany", "firefox", "mozilla", "konqueror", "netscape", "links", "lynx"};
                StringBuffer stringBuffer = new StringBuffer();
    
                for (int i = 0; i < browsers.length; i++)
                {
                    if (i == 0) stringBuffer.append(String.format("%s \"%s\"", browsers[i], url));
                    else stringBuffer.append(String.format(" || %s \"%s\"", browsers[i], url));
                }
                command = new String[]{"sh", "-c", stringBuffer.toString()};
            } else if (operatingSystemName.indexOf("win") >= 0)
            {
                command = new String[]{"rundll32 url.dll,FileProtocolHandler " + url};
    
            } else if (operatingSystemName.indexOf("mac") >= 0)
            {
                command = new String[]{"open " + url};
            } else
            {
                System.out.println("an unknown operating system!!");
                return;
            }
    
            try
            {
                if (command.length > 1) runtime.exec(command); // linux
                else runtime.exec(command[0]); // windows or mac
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        }    
    }
    

    Using Selenium to open a browser

    To use the selenium library add the following dependency to your pom.xml file.

    
        org.seleniumhq.selenium
        selenium-java
        3.141.59
    
    

    Then in your main class, add the following code snippet.

    @EventListener({ApplicationReadyEvent.class})
    private void applicationReadyEvent()
    {
        String url = "http://localhost:8080";
    
        // pointing to the download driver
        System.setProperty("webdriver.chrome.driver", "Downloaded-PATH/chromedriver");
        ChromeDriver chromeDriver = new ChromeDriver();
        chromeDriver.get(url);
    }
    

    Notice: It is possible to use most of the popular browsers like FirefoxDriver, OperaDriver, EdgeDriver, but it is necessary to download browsers' drivers beforehand.

提交回复
热议问题