티스토리 뷰

일반 자바 프로젝트가 아닌 스프링 부트 프로젝트를 이용해서 특정 기능을 구현할 때, 설정파일이나 dependency 관리를 편하게 하고싶은데 spring-boot-starter-web 패키지를 의존성에 추가하게 되면 상당히 많은 양의 사용하지 않을 클래스들을 로딩하게 됩니다.

 

build.gradle 파일에 단순히 하나의 패키지(테스트 패키지까지 포함해도 고작 두 개)가 추가되었을 뿐인데도 기본 상태에서 실행시키면 상당히 많은 시간이 소모됩니다.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
}

그리고 원하는 기능을 실행한 뒤에도 애플리케이션이 종료되지 않아 강제로 IDE의 종료 버튼을 클릭해줘야 합니다.

 

그럴 땐 아래처럼 @SpringBootApplication 애노테이션이 있는 메인 클래스에서 웹 애플리케이션 타입 설정을 추가하신뒤 실행시켜 주시면 됩니다.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MySpringApplication {
    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(MySpringApplication.class);
        springApplication.setWebApplicationType(WebApplicationType.NONE);
        springApplication.run(args);
    }
}

 

설정 파일 수정을 통해 더욱 더 간단하게 해결할 수 있습니다.

 

- application.yml

spring:
  main:
    web-application-type: none

- application.properties

spring.main.web-application-type: none

 

실행 시간을 매우 단축시킬 수 있고 웹 서버가 계속 실행된 상태로 유지되는 것이 아니기 때문에 main 메소드 수행이 끝나면 바로 종료하게 됩니다.

댓글