티스토리 뷰
// yaml
weather:
busan: 17
seoul: 13
yangsan: 14
island:
jeju: 20
dokdo: 17
1. @Value
- Spel 을 활용
@Service
public class propertiesService {
@Value(${weather.busan})
private int busan;
@Value(${weather.seoul})
private int seoul;
@Value(${weather.yangsan})
private int yangsan;
@Value(${weather.island.jeju})
private int jeju;
@Value(${weather.island.dokdo})
private int dokdo;
}
2. @ConfigurationProperties
@Setter @Getter
@Component or @Configuration
@ConfigureProperties(prefix = "weather")
public class CustomProperties {
private int busan;
private int seoul;
private int jeju;
private Island island;
@Getter @Setter
public class Island {
private int jeju;
private int dokdo;
}
}
- prefix 설정 필요
- 이름을 맞춰줘야 ex) weather.busan 이런식으로 맞춰줌
- Setter, Getter 필요함
- 빈으로 등록해줘야함
3. @ConstructorBinding
@Getter
@RequiredArgsConstructor
@ConstructorBinding
@ConfigurationProperties(prefix = "weather")
public final class ConstructorProperties {
private final int busan;
private final int seoul;
private final int yangsan;
private final Island island;
@Getter
@RequiredArgsConstructor
public static final class Island {
private final int jeju;
private final int dokdo;
}
}
- 위에 과정 같은 경우는 @Setter 가 존재하기에 외부에서의 수정이 가능하므로 불변객체가 아님.
- 불변객체로 만들기 위해서 @ConstructorBinding 사용
- @ConstructorBinding : final 필드에 대해 값을 주입해줌 -> 중첩 클래스가 존재한다면 자동으로 중첩 클래스의 final 필드까지 주입해줌.
- final 필드에 대해서 값을 주입해주기에 필드에 final 명시 해줘야함.
@Configuration
@EnableConfigurationProperties(value = {ConstructorProperties.class})
public class PropertiesConfiguration {
}
- 이렇게 사용시 빈으로 관리가 안되기 때문에 @EnableConfigurationProperties 를 이용하여 이런식으로 빈 등록을 해줘야 한다.
※ 참조
woowacourse.github.io/javable/post/2020-09-29-spring-properties-binding/
반응형
'etc' 카테고리의 다른 글
Java 정규표현식 검사 사이트 (0) | 2021.06.01 |
---|---|
문자 인코딩과 유니코드 (0) | 2021.04.18 |
JSend (0) | 2021.03.24 |
trailing commas (0) | 2021.03.21 |
REST API 설계 가이드 (0) | 2021.03.19 |
링크
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 이펙티브자바
- 킹수빈닷컴
- http
- 백준
- 김영한 http
- GCP
- Spring Security
- JS 딥다이브
- js promise
- 드림코딩
- js api
- 모던자바스크립트
- js array
- 프로그래머스 SQL
- java
- JPA 연관관계 매핑
- HTTP 완벽 가이드
- 패스트캠퍼스 컴퓨터공학 완주반
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 프로그래머스
- 백기선 스터디
- 이펙티브자바 아이템60
- 김영한 JPA
- REST API
- 이펙티브자바 스터디
- BOJ
- 집 구하기
- 이펙티브자바 아이템59
- HTTP 완벽가이드
- dreamcoding
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함