반응형
이전에 nodejs를 사용해서 개발할 때는, 개발 서버가 실행될 때 자동으로 웹 브라우저가 실행되어서 참 편했습니다.
하지만 스프링에서는 그런 기능이 기본으로 있지 않아, 개발할 때 항상 웹 브라우저를 수동으로 켜서 실행해야 했습니다.
이 때문에 구글링과 chatGPT의 도움을 통해 임시로나마 다음 코드를 통해 해결할 수 있었습니다.
package com.example.exampleapp;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import java.awt.*;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Optional;
@Slf4j
@EnableJpaAuditing
@SpringBootApplication
public class ExampleApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(SpringLectureApplication.class);
ConfigurableApplicationContext context = app.run(args);
try {
// 서버의 포트 번호 가져오기
String port = Optional.ofNullable(context.getEnvironment().getProperty("server.port"))
.orElse("8080");
String url = "http://localhost:" + port;
browse(url);
log.info("Open web browser - " + url);
} catch (IOException | URISyntaxException e) {
e.printStackTrace();
}
}
public static void browse(String url) throws IOException, URISyntaxException {
if (Desktop.isDesktopSupported()) {
Desktop desktop = Desktop.getDesktop();
desktop.browse(new URI(url));
} else {
String os = System.getProperty("os.name").toLowerCase();
if (os.contains("win")) { // Windows
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
} else if (os.contains("mac")) { // macOS
Runtime.getRuntime().exec("open " + url);
} else { // Linux
Runtime.getRuntime().exec("xdg-open " + url);
}
}
}
}
이 코드를 사용할 때 주의사항은, 개발할 때만 사용해야 한다는 것입니다.
깜빡하고 release나 제품 버전으로 그대로 내보내면, 서버를 실행할 때마다 웹브라우저가 켜지는(...)일이 발생할 것입니다.
이를 방지하기 위해서는 스프링 프로퍼티에 `spring.profiles.active=dev` 와 같은 처리를 통해서 구현하면 될 것입니다.
하지만 저는 아직 공부중인 단계이기 때문에 프로퍼티에 따라 처리하는 코드는 생략하고.. 나중에 기회가 되면 올려보겠습니다.
'Develop > Spring' 카테고리의 다른 글
| (2) restdocs + openapi3 + swagger-ui 설정을 해보자 - 실전편 (0) | 2024.01.18 |
|---|---|
| (1) restdocs + openapi3 + swagger-ui 설정을 해보자 - 설명편 (0) | 2024.01.18 |
| 다대다 복합키 클래스 적용기 (0) | 2023.12.18 |
| docker-compose 기반 mysql, redis 데이터베이스 세팅 (1) | 2023.12.18 |
| Spring REST API 사용 시 Web + Security CORS 설정 (0) | 2023.12.04 |