티스토리 뷰

Springboot를 사용하면 기본적으로 사용할 수 있는 환경설정 파일은 application.properties이다. 작은 프로젝트에서는 이것만 사용해도 문제는 없지만 규모가 커지면 이 파일 하나에 설정을 관리하기 벅찰수도 있다. 이럴 때 용도에 맞게 이 파일을 분리해서 사용하면 여러모로 유용하다. 


1. properties 파일 분리

일단은 application.properties 파일을 사용했을 때 다른 properties 파일을 추가로 생성하고 이것도 동일하게 외부 환경변수를 관리하고자 한다. 예를들면 db.properties 파일을 추가로 설정하는 경우이다. 

@PropertySource(value = { "classpath:project.properties" })
@SpringBootApplication
public class SampleApplication {
    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(SampleApplication.class);
        application.run(args);
    }
}

properties 파일을 추가하려면 위와 같이 springboot main class에서 @PropertySource를 사용해서 추가할 수 있다. 배열 형태로 여러개의 properties 파일을 지정할 수도 있다. 단 properties 파일일 경우에만 @PropertySource가 동작하지 yml 파일인 경우는 동작하지 않는점을 명심하자. 

classpath: 는 src/main/resources/ 를 뜻하며 폴더를 만들어 관리하고 싶으면 폴더 경로에 맞게 설정을 변경해주면 된다. 

properties 파일 추가

이렇게 추가를 했으면 사용할때는 application.properties (or applicationn.yml) 파일에서 외부 환경변수를 가져오는 방법과 동일하게 사용이 가능하다. 

properties 파일 내용

추가한 properties 파일이 위와 같이 project.name 이라는 key를 가지고 있고 someProject라는 value를 가지고 있으면 

@Value("${project.name}")
String projectName;

이런 식으로 java class에서는 값을 가지고 올 수 있다. 


2. yml 파일 분리 

application.yml 파일을 기본으로 사용하고 있을때 위와 같이 properties 파일을 추가해서 사용할 수도 있다. 하지만 나는 꼭 yml 파일을 분리해서 사용해야한다면 다음과 같은 방법으로 사용이 가능하다. 

@SpringBootApplication
public class SampleApplication {
    public static void main(String[] args) {
        SpringApplicationBuilder springApplicationBuilder = new SpringApplicationBuilder(SampleApplication.class);
        springApplicationBuilder.properties("spring.config.location=" + "classpath:/application.yml" + ", classpath:/project.yml" );
        SpringApplication springApplication = springApplicationBuilder.build();
        springApplication.run(args);
    }
}

1번과 마찬가지로 springboot main class에서 설정을 해준다.  yml 파일 추가에는 @PropertySource가 동작하지 않으므로 SpringApplicationBuilder를 통해 yml 파일을 추가해준다. 위와 같은 방식으로 여러개의 yml 파일 추가가 가능하다. 

yml 파일 분리

main class에서 설정한것처럼 project.yml 이라는 파일을 application.yml 과 분리해서 생성을 해주고 

yml 파일 내용

이렇게 yml 문법에 맞게 변수를 정의해준다. 

@Value("${project.name}")
String projectName;

값을 가지고 올때는 properties와 마찬가지로 이런 방식으로 가지고 올 수 있다. 

 

혹시 springboot 2.4 이상의 버전을 사용중이라면 다음 글을 참조하도록 하자. 

 

Springboot application.yml (property) 여러개 설정하기

예전에 application.yml (or application.properties) 분리하는 방법에 대해 기술한적이 있다. Springboot application.yml (application.properties) 파일 분리방법 Springboot를 사용하면 기본적으로 사용할 수..

oingdaddy.tistory.com

 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31