application.yml 설정 값 사용하기

2024. 5. 24. 01:12· 개발 일지/OMS 프로젝트
목차
  1.  
  2. 설정 값
  3. 설정 파일로 설정 값을 관리하는 이유
  4. 설정 값 사용하기
  5. 설정 값 사용하기 구현

 

 

 

 

설정 값

프로젝트를 진행하다보면 설정 값이 필요합니다. 프로젝트에서 사용하는 설정 값들의 예시는 다음과 같습니다.

  • 데이터베이스 설정 
  • 서버 설정
  • 보안 설정
  • 로깅 설정
  • 메일 설정
  • API 키 및 외부 서비스 연동
  • 페이지네이션 등등...

이러한 설정 값은 Java 소스 코드가 아닌 설정 파일에서 따로 관리하면 얻는 이점이 있습니다. 

 

 

 

설정 파일로 설정 값을 관리하는 이유

설정 값을 자바 코드에서 분리하여 application.properties나 application.yml 파일로 관리하면 다음과 같은 장점이 있습니다. 

  • 관리와 보안이 좋아집니다. 설정 정보를 한 곳에 관리하여 유지 보수가 좋아지고 민감한 정보(비밀번호, API 키 등)가 소스코드에서 분리되어 보안이 강화됩니다.
  • 유연성과 확장성이 좋아집니다. 개발, 테스트, 운영 등 다양한 환경에 따라 서로 다른 설정 파일을 사용할 수 있습니다. 또한 애플리케이션을 재배포 하지 않아도 설정을 변경할 수 있습니다. 

 

 

설정 값 사용하기

application.yml 이나 application.properties에 설정 값을 저장하고 spring boot에 가져와 사용합니다. 

이때 @Value, @ConfigurationProperties 두 가지 방법으로 spring boot와 가져올 수 있습니다.

@Value는 필드에 직접 주입하는 방식이고 @ConfigurationProperties는 클래스 파일을 만들어 클래스 필드에 설정 값을 주입하는 방식입니다. 각 방식의 주로 사용하는 상황과 특징은 다음과 같습니다. 

 

@Value 

  • 개별적인 값 하나를 주입할 때 사용합니다. 
  • 간단하게 특정 키의 값을 불러올 때 유용하지만 타입 변환이나 복잡한 객체 구조를 다루기에는 한계가 있습니다. 

 

@ConfigurationProperties 

  • 한 묶음으로 관련 있는 설정들을 자바 객체로 쉽게 바인딩 할 수 있습니다.
  • 타입 안정성을 제공하고, 복잡한 자료 구조를 쉽게 매핑해주며, 계층적인 프로퍼티 관리에 용이합니다. 

 

실무에서는 설정 데이터의 구조가 복잡하거나 여러 설정 값들이 연관된 경우가 많아 @ConfigurationProperties를 사용하는 경우가 더 많다고 합니다. 또한 유지 보수가 좋고 깔끔한 코드를 만들 수 있다는 측면에서도 @ConfigurationProperties가 효율적이라 합니다.

 

각자의 프로젝트 상황에 맞춰 선택하면 될 거 같습니다. 저는 application.yml과 @ConfigurationProperties를 사용했습니다. 

 

참고로 @Value는 이렇게 사용합니다.

@Value("${app.name}")
private String appName

 

 

 

설정 값 사용하기 구현

순서는 다음과 같습니다.

  1. application.yml 파일에 설정 값 생성 
  2. @ConfigurationProperties를 적용한 파일에 설정 값 받기 
  3. 애플리케이션 코드 적용 

저는 pagination에서 pageSize 설정 값을 생성하고 적용해 보겠습니다. 

 

 

application.yml 파일에 설정 값 생성 

# page setting
app:
  pagination:
    pageSize: 10

 

 

 

@ConfigurationProperties를 적용한 파일에 설정 값 받기

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "app.pagination")
@Data
public class PaginationConfig {
    private Integer pageSize;
}

 

@ConfigurationProperties 어노테이션을 설정하고 prefix를 통해 가져오고 싶은 설정 값 묶음을 선택합니다.

@Data 롬복 어노테이션으로 Getter와 Setter를 자동으로 생성합니다. 

 

 

애플리케이션 코드 적용 

@Service
@RequiredArgsConstructor
@Transactional
public class ItemService {

    // @RequiredArgsConstructor 어노테이션으로 자동 주입 
    private final PaginationConfig paginationConfig;


    public List<ItemListDto> getItemsByLatest(int offset) throws SQLException {
        return itemMapper.getItemsByLatest(paginationConfig.getPageSize(), offset);
    }
}

 

PaginationConfig를 주입한 이후 getter를 사용해 설정 값을 사용합니다. 

 

  1.  
  2. 설정 값
  3. 설정 파일로 설정 값을 관리하는 이유
  4. 설정 값 사용하기
  5. 설정 값 사용하기 구현
'개발 일지/OMS 프로젝트' 카테고리의 다른 글
  • VIEW를 이용하여 금액 순으로 상품 페이지 조회하기
  • 상품 조회 최신순 쿼리 튜닝 (작은 범위의 데이터로 조)
  • 상품 범위 조회 offset 개선
너지살
너지살
너지살
너지살개발자
너지살
전체
오늘
어제
  • 분류 전체보기 (375)
    • 잡식 (2)
      • 티스토리 (2)
    • 개발 일지 (0)
      • OMS 프로젝트 (4)
      • 우테코 6기 프리코스 (1)
    • Git (2)
    • JAVA (15)
      • Java 공부 (6)
      • 자료구조 (4)
      • 도움되는 메모 (4)
    • DevOps (18)
      • AWS (6)
      • Docker (2)
      • Jenkins (1)
      • Nginx (1)
      • Kafka (6)
      • RabbitMQ (2)
    • Spring, Spring Boot (16)
      • Test Code (1)
      • AOP (2)
      • Batch (3)
      • Cache - Redis (5)
      • Cloud Config - 설정 파일 관리 (3)
      • 성능 측정 (1)
      • 예외 처리 (1)
    • BackEnd (1)
      • Spring 공부 (1)
      • Thymeleaft (0)
    • DB (17)
      • JPA (2)
      • DB 공부 (3)
      • DB 포스팅 (4)
      • DB 답장 (1)
      • MySQL (2)
      • Redis (5)
      • MongoDB (0)
    • CS (8)
      • Spring (4)
      • DataBase (3)
      • Java (1)
    • Algorithm (203)
      • 알고리즘 개념 (5)
      • 정렬 알고리즘 (11)
      • 프로그래머스 문제풀이 (18)
      • 백준 문제풀이 (165)
      • 소프티어 문제풀이 (3)
      • 알고리즘 시험 정리 (1)
    • SQL (0)
      • 문법 (1)
      • 프로그래머스 문제풀이 (52)
      • 리트코드 문제풀이 (19)
    • IT (1)
      • IT 공부 (1)
    • 정리 (10)
      • 질문 정리 (10)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • two pointer
  • 알고리즘
  • 분리 집합
  • 최소 스패닝 트리
  • 비트마스킹
  • 자료구조
  • Algorithm
  • 설정
  • 투포인트
  • MST
  • 유니온파인드
  • 최소 신장 트리
  • dynamiceprogramming
  • 경로표현식
  • 두 포인터
  • 그래프 탐색
  • db
  • Next permutation
  • Test code
  • docker
  • Java
  • 다음 순열 찾기
  • Java 정리
  • 외판원 순회 문제
  • Sorting algorithm
  • 질문 정리
  • Bitmast
  • dynamic programing
  • Union-Find
  • DFS
  • 백준
  • 투 포인터
  • JPA
  • 다이나믹 프로그래밍
  • 우선수위큐
  • Spring Boot
  • 깊이/너비 우선탐색
  • Spring Batch
  • 그래프 이론
  • 데이터베이스
  • 크루스칼 알고리즘
  • 다이나믹프로그래밍
  • DP
  • git
  • Spring Boot Redis 연결
  • cache
  • 부분탐색
  • 병렬 처리
  • 소프티어
  • redis

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
너지살
application.yml 설정 값 사용하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.