일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- sope
- 카카오
- 스프링이란
- 쇠막대기 문제
- 11723
- 전화번호 목록
- 이진탐색
- 그래프
- 구현
- Spring이란
- 자바
- Algorithm
- 가장먼노드
- Spring
- Singtone
- 토비의스프링
- 알고리즘
- bitmasking
- 카카오인턴
- 백준
- @Profile
- Java
- 이진검색
- 플로이드워셜
- 프로그래머스
- BinarySearch
- 스프링프로젝트 시작하기
- 플로이드와샬
- 스프링
- 징검다리
- Today
- Total
육감적 코딩
Environment 2부. 프로퍼티 본문
프로퍼티
Environment가 제공하는 두 번째 기능인 프로퍼티에 대해 알아보겠습니다.
이 기능은 애플리케이션에 등록되어있는 여러가지 key-value 쌍으로 제공되는 프로퍼티에 접근 할 수 있는 기능입니다.
기본적으로 계층형으로 접근합니다. 여기서 말하는 계층형이란 우선순위가 존재 한다는 뜻입니다.
프로퍼티는 여러가지 소스가 있는데 여러가지 형태로 제공될 수 있습니다. key-value 쌍으로 OS에있는 환경변수, 자바 애플리케이션을 실행할 때 넘겨주는 전 시간에 해본 -d 옵션으로 넘겨주는 프로퍼티들 등 다양합니다.
그럼, 프로퍼티어떻게 설정하고 어떻게 접근하는가?
1. VM obtions
VM options에
-D 옵션으로 넣어줄 수 있습니다.
2. properties 파일 만들기
resources 경로 밑에 프로퍼티파일을 만든 뒤,
resources/app.properties
app.about=spring
라고 설정할 수 있습니다.
그리고 실행하는 애플리케이션에서
@SpringBootApplication
@PropertySource("classpath:/app.properties")
public class Demospring51Application {
public static void main(String[] args) {
SpringApplication.run(Demospring51Application.class, args);
}
}
@PropertySource("classpath:/app.properties") 라고 설정합니다.
프로퍼티 확인 1.
getProperty
Environment 객체의 getProperty메소드를 이용해서 프로퍼티 값을 가져올 수 있습니다.
getProperty 메소드를 이용하면 key에 해당하는 값을 가져올 수 있습니다.
Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.name"));
System.out.println(environment.getProperty("app.about"));
프로퍼티 확인2.
@Value
@Value 어노테이션을 사용해서 값을 가져올 수도 있다. key에 해당하는 값을 가져온다.
resources/app.properties
app.about=myValue
@Component
public class AppRunner implements ApplicationRunner {
@Value("${app.about}")
String about;
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println(about);
}
}
VM options VS .properties 파일
두 설정 방법 중 어떤 설정방법이 더 우선순위가 높을까요?
알아보기위해 코드를 수정해 줍니다.
resources/app.properties
app.name=spring
VM options는 그대로
-Dapp.name=spring5
Environment environment = ctx.getEnvironment();
System.out.println(environment.getProperty("app.name"));
VM options의 우선순위가 더 높은걸 확인할 수 있습니다.
'정리 > Spring' 카테고리의 다른 글
Environment 1부. 프로파일 (0) | 2020.08.12 |
---|---|
빈의 스코프 (0) | 2020.08.10 |
토비의스프링3.1 [9장] 스프링 프로젝트 시작하기 (0) | 2020.08.07 |
토비의스프링3.1 [8장] 스프링이란 무엇인가? (0) | 2020.08.05 |
@Component와 컴포넌트 스캔 (0) | 2020.08.03 |