본문 바로가기
자바/스프링 | 웹

스프링부트, 그래들 프로파일

by 참새는 짹짹 2021. 2. 10.

로컬과 개발환경, 서비스 환경에 따라

설정을 다르게 하고 싶을 때

프로파일을 설정하고 사용할 수 있다

💡
이 때 방법으로

스프링 자체에서 기능을 사용하는 방법과

프로젝트 관리 도구인 그래들이나 메이븐을 사용하는 방법 ( 여기서는 그래들 사용 )

두 가지가 있다

스프링부트 프로파일 설정


소스는 그대로 빌드 후

스프링 프레임워크가 설정된 프로파일을 사용

application-{profile}.properties 생성

  • ex) application-prod.properties, application-dev.properties 생성 후

    각 환경에 맞는 설정 값 정의

application.properties 설정

  • 활성화할 프로파일을 정의
spring.profiles.active=prod
// spring.profiles.active=dev

  • application.properties 에는 공통으로 설정할 값을 정의

+ Configuration 설정

  • 프로파일로 프로퍼티(설정파일)말고도

    Configuration을 만들어 프로파일에 따라

    스프링이 관리할 빈이나 동작을 다르게 할 수도 있다

@Profile("prod")
@Configuration
public class ProdConfiguration() {

	@Bean
	public String Bean() {
		return "prodBean";
	}

}
@Profile("dev")
@Configuration
public class DevConfiguration() {

	@Bean
	public String Bean() {
		return "devBean";
	}

}

그래들 프로파일 설정


빌드 시점에

프로파일을 구분하여 패키지에 포함

build.gradle 설정

sourceSets {
    if (!project.hasProperty('profile') || !profile) {
        ext.profile = 'dev'
    }
    main {
        java { srcDirs "src/main/java" }
        resources { srcDirs "src/main/resources", "src/main/resources-env/${profile}" }
    }
}

  • sourceSets을 사용하여 소스와 리소스 파일의 논리적인 그룹을 나누고

    src/main/resources-env/${profile} 로 프로파일별로 포함할 리소스 폴더를 구분

  • 폴더를 구분하여 빌드에 제외 시킬 수 있음으로

    환경에 따라 있을 수 있는 중요 정보의 유출을 막을 수 있다

실행시 옵션 지정

gradle clean build -Pprofile=prod

  • 만일 src/main/resources-env/${profile} 안에 있는 프로퍼티(설정파일)

    이름이 application-{profile}.properties 와 같다면

    마찬 가지로 application.properties 에서 활성화할 프로파일를 정의해줘야 한다

참고


스프링 부트 개념과 활용 - 인프런
중급자를 위해 준비한 [프레임워크 및 라이브러리] 강의입니다. 스프링 부트의 원리 및 여러 기능을 코딩을 통해 쉽게 이해하고 보다 적극적으로 사용할 수 있는 방법을 학습합니다. 스프링부트 ( https://spring.io/projects/spring-boot) 프로젝트는 스프링 프레임워크를 더 빠르고 쉽게 사용할 수 있게 도와주는 툴입니다. 본 강좌는 여러분들이 스프링 부트의 여러 기능을 쉽게 이해하고 적극적으로 사용할 수 있는 방법을 제공합니다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

'자바 > 스프링 | 웹' 카테고리의 다른 글

스프링 MVC 구조 및 동작  (0) 2021.01.31
Autowired 의존관계 주입  (0) 2021.01.29
UTF-8, CharacterEncoding  (0) 2021.01.15

댓글