250x250
Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- scanner
- map
- math
- Union-find
- 리소스모니터링
- deque
- 스프링부트
- string
- priority_queue
- NIO
- html
- BFS
- union_find
- GC로그수집
- sql
- dfs
- 스택
- List
- set
- Calendar
- alter
- javascript
- CSS
- 큐
- JPA
- 힙덤프
- Properties
- date
- Java
- spring boot
Archives
- Today
- Total
매일 조금씩
[IoC 컨테이너와 빈] 6. Environment 2부. 프로퍼티 본문
728x90
반응형
[전체 목차]
- IoC 컨테이너와 빈
- 스프링 IoC 컨테이너와 빈
- ApplicationContext와 다양한 빈 설정 방법
- @Autowired
- @Component와 컴포넌트 스캔
- 빈의 스코프
- Environment - 프로파일
- Environment - 프로퍼티
- Resource / Validation
- 데이터 바인딩
- SpEL
- 스프링 AOP
- Null-Safety
1. 프로퍼티
- 다양한 방법으로 정의할 수 있는 설정값
Environment
의 역할은 프로퍼티 소스 설정 및 프로퍼티 값 가져오기
아래와 같이 애플리케이션 JVM 옵션으로 Active profiles
값을 설정해 두고.. (여기선 test로 설정)
아래처럼 env.getProperty("spring.profiles.active")
로 가져와서 로그를 찍으면..!
package com.test.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.Objects;
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
ApplicationContext ctx;
@Override
public void run(ApplicationArguments args) throws Exception {
Environment env = ctx.getEnvironment();
System.out.println(Arrays.toString(Objects.requireNonNull(env.getProperty("spring.profiles.active")).split(",")));
}
}
위처럼 내가 설정해둔 값인 "test" 가 찍힌다.
2. 프로퍼티에는 우선 순위가 있다.
- StandardServletEnvironment의 우선순위
- ServletConfig 매개변수
- ServletContext 매개변수
- JNDI (java:comp/env/)
- JVM 시스템 프로퍼티 (-Dkey=”value”)
- JVM 시스템 환경 변수 (운영 체제 환경 변수)
3. @PropertySource
- Environment를 통해 프로퍼티 추가하는 방법
더 효율적으로 properties를 설정하고 싶다! 하면 properties 파일을 하나 만들어서 (여기선 app.properties)
아래와 같이 어노테이션을 추가하면 된다.
그럼 아래와 같이 제대로 가져와서 출력도 되는걸 볼 수 있다.
4. 스프링 부트의 외부 설정 참고
- 기본 프로퍼티 소스 지원 (application.properties)
- 프로파일까지 고려한 계층형 프로퍼티 우선 순위 제공
계층형이라 JVM옵션으로 준 프로퍼티와 프로퍼티 파일을 하나 만들어서 적용한 프로퍼티 둘 중 하나만 찍힐텐데..
과연 어떤게 더 우선순위가 높을까?
JVM 옵션이 더 우선순위가 높다.
※ 요약
- Profile : 환경에 맞춰 사용할 수 있는 하나의 큰 설정 파일 그룹.
- Property : Profile 파일 안에 들어 있는 구체적인 설정 값.
- @Value: 코드 내에서 프로퍼티 값을 가져와서 사용할 수 있도록 해주는 어노테이션.
728x90
반응형
'Spring Framework > 스프링 프레임워크 핵심 기술' 카테고리의 다른 글
[IoC 컨테이너와 빈] 6. Environment 1부. 프로파일 (0) | 2024.11.17 |
---|---|
[IoC 컨테이너와 빈] 5. 빈의 스코프 (0) | 2024.11.06 |
[IoC 컨테이너와 빈] 4. @Component 와 컴포넌트 스캔 (1) | 2024.11.04 |
[IoC 컨테이너와 빈] 3. @Autowired (0) | 2024.11.03 |
[IoC 컨테이너와 빈] 2. ApplicationContext와 다양한 빈 설정 방법 (0) | 2024.11.03 |