반응형

yml 기준
2.4부터는 기본적으로 기존에 사용하던 문법을 지양한다.
그렇다고 사용할 수 없는건 아니지만 2.4내용은 지양하도록 한다.
아래에서 설명 하도록 하겠다.

List 구조로 가져오는 방법


application-blog.yml

blogs: # prefix로써 리스트로 받기 위해서 필요하다.
  list: # 클래스의 변수와 매핑된다.
  # 아래는 리스트가 될 목록
    -
      url: https://dev -monkey-dugi.tistory.com/
      rssUrl: https://dev-monkey-dugi.tistory.com/rss
      description: 더기이
    -
      url: https://jojoldu.tistory.com/
      rssUrl: https://jojoldu.tistory.com/rss
      description: 기억보단 기록을

아래와 같이 prefix를 지정하고, list와 매핑 될 수 있도록 변수명을 반드시 맞추어야 한다.

@Getter @Setter
@Component
@ConfigurationProperties("blogs")
public class BlogProperties {

    private List<BlogPropertiesDto> list = new ArrayList<>();
}

list와 마찬가지로 리스트가 될 목록의 클래스가 필요하다.

@Getter @Setter
public class BlogPropertiesDto {

    private String url;
    private String rssUrl;
    private String description;
}

반드시 setter가 있어야 매핑이 된다.

profile에 따른 설정 파일 사용


스프링 부트는 profile별로 설정 파일을 설정할 수 있도록 제공한다.
test와 dev라는 profile로 테스트 해보도록 하겠다.
profile이란 각각의 특정 상황이라고 보면 된다. 로컬환경, 개발환경, 운영환경은 모두 설정이 다르기 때문에
이러한 기능이 필요한 것이다.

1. inteliJ에서 profile 설정하여 사용하기

spring:
  config:
    activate:
      on-profile: test
server:
  port: 8080
---
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 8081

그림과 같이 Edit Configuration에서 dev라고 적용을 하면 8081포트로 서버가 구동된다.

2. 운영 및 개발 서버 배포 시 profile 설정하여 사용하기

yml 코드는 동일하다. 하지만 실행 하기 위한 명령어가 존재한다.
inteliJ에서 dev라고 적용한 것을 명령어로 실행하는 것이다.
만약 application-dev.yml이라는 파일이 존재하면 해당 파일을 읽게 된다.
그렇지 않고, 위와 같이 application.yml에 설정되어 있다면 위와 같이 동일하게 동작한다.
실행 스크립트는 아래와 같다.

// 2.4부터 아래 코드를 지향하는데 가끔 버그가 있다. 일단 지양하는게 좋겠다.
-Dspring.config.activate.on-profile=dev

// 2.4부터 지양하는 코드이지만 위 코드가 버그가 있는 것으로 판단되어 일단 지향하자.
-Dspring.profiles.active=dev

3. yml파일에서 활성화 하여 설정 파일별로 관리하기

yml 파일 내에서 profile을 활성화 하여 해당 profile을 파일 별로 관리도 가능하다.
먼저 application.yml에 아래와 같이 dev를 활성화 한다.
on-profile로는 불가능한 부분이다.

spring:
  profiles:
    active: dev

이후 application-dev.yml에 예를 들어 아래와 같이 설정하면 -dev를 읽어 해당 파일을 읽게 된다.

server:
  port: 8081

4. yml파일 내에서 활성화 및 활성화 적용

yml에서는 외부에서 profile을 주입하지 않아도, 파일 내에서 주입하여 실행할 수 있다.
2.4버전의 문법으로는 주입이 불가능하다. 2.4이전의 문법으로 주입을 해야한다.

# 2.4 이전
spring:
  profiles:
    active: dev
---
# 2.4 이후
spring:
  config:
    activate:
      on-profile: test
server:
  port: 8080
---
# 2.4 이전
server:
  port: 8081
spring:
  profiles: dev

2.4이후 inclue

  config:
    activate:
      on-profile: test
    import: application-oauth.yml

참고


bealdung

반응형
복사했습니다!