💐 Spring/Spring 핵심 기술

7. IoC 컨테이너 6부 : Environment 2부. 프로퍼티

2020. 7. 2. 22:56
목차
  1. 프로퍼티
  2. 프로퍼티에는 우선 순위가 있다.
  3.  @PropertySource
  4.  
  5.  
  6.  
  7. 스프링 부트의 외부 설정 참고
반응형

프로퍼티

  • 다양한 방법으로 정의할 수 있는 설정값
  • Environment의 역할은 프로퍼티 소스 설정 및 프로퍼티 값 가져오기

 

 

1) 다양한 방법으로 정의할 수 있는 설정값

1-1. VM options 설정

VM options : -Dapp.name=spring5 설정

@Component
public class AppRunner implements ApplicationRunner {

    @Autowired
    ApplicationContext ctx;

    @Autowired
    BookRepository bookRepository;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        Environment environment = ctx.getEnvironment();
        System.out.println(environment.getProperty("app.name")); //이 부분!
    }
}

출력 결과는 spring5가 된다.

 

 

1-2. properties 파일 생성한 다음 프로퍼티 설정

java/main/resource/ 에 app.properties라는 파일을 생성해 설정해준다.

 

 

 

 

2) Environment의 역할은 프로퍼티 소스 설정 및 프로퍼티 값 가져오기

@Component
public class AppRunner implements ApplicationRunner {

    @Autowired
    ApplicationContext ctx;

    @Autowired
    BookRepository bookRepository;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        Environment environment = ctx.getEnvironment();
        System.out.println(environment.getProperty("app.name"));
    }
}

 

@SpringBootApplication
@PropertySource("classpath:/app.properties")
public class Demospring51Application {

    public static void main(String[] args) {
        SpringApplication.run(Demospring51Application.class, args);

    }

}

properties 파일로 설정하는 경우에는 이렇게 @Configuration을 확장하는 애노테이션 밑에 코드를 추가해준다.

 

 

 

프로퍼티에는 우선 순위가 있다.

  • StandardServeltEnvironment의 우선순위
    • ServeltContext 매개변수
    • JNDI (java:comp/env/)
    • JVM 시스템 프로퍼티 (-Dkey="value")
    • JVM 시스템 환경 변수 (운영 체제 환경 변수)

 

(test) VM options 설정과   app.properties의 프로퍼티 설정을 같게 한다면 누가 더 우선순위가 높을까? 

           VM options : -Dapp.name=spring5            /        app.properties : app.name=spring

 

결과는, VM options 가 더 높다. spring5가 출력이 된다.

 

 

 

 @PropertySource

  • Environment를 통해 프로퍼티 추가하는 방법
app.name=spring

java/resources 에 app.properties 라고 File 형식으로 하나 만들어준다.

 

 

package com.example.demospring51;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;

@SpringBootApplication
@PropertySource("classpath:/app.properties") // **** 프로퍼티 추가 ****
public class Demospring51Application {

    public static void main(String[] args) {
        SpringApplication.run(Demospring51Application.class, args);

    }

}

그런 다음 @Configuration을 확장하는 애노테이션이 붙은 클래스에 @PropertySource("classpath:/app.properties")를 추가해준다.    

 

 

 

스프링 부트의 외부 설정 참고

  • 기본 프로퍼티 소스 지원 (application.properties)
  • 프로파일까지 고려한 계층형 프로퍼티 우선 순위 제공
반응형
저작자표시 (새창열림)
  1. 프로퍼티
  2. 프로퍼티에는 우선 순위가 있다.
  3.  @PropertySource
  4.  
  5.  
  6.  
  7. 스프링 부트의 외부 설정 참고
'💐 Spring/Spring 핵심 기술' 카테고리의 다른 글
  • 9. IoC 컨테이너 8부 : ApplicationEventPublisher
  • 8. IoC 컨테이너 7부 : MessageSource
  • 6. IoC 컨테이너 6부 : Environment 1부. 프로파일
  • 5. IoC 컨테이너 5부 : 빈의 스코프
iseunghan
iseunghan
꾸준하게 열심히..
iseunghan꾸준하게 열심히..
iseunghan
iseunghan

공지사항

  • 어제보다 나은 오늘이 되기 위해 🔥
  • 분류 전체보기 (262)
    • 💐 Spring (14)
      • 개념 및 이해 (2)
      • Spring 핵심 기술 (24)
      • Spring REST API (8)
      • Spring MVC, DB 접근 기술 (7)
      • Spring Security (23)
      • Spring in Action (1)
    • 🌻 JAVA (84)
      • 자바 ORM 표준 JPA 프로그래밍 (20)
      • 알고리즘, 자료구조 (13)
      • 디자인 패턴 (7)
      • 정리정리정리 (43)
      • JUnit (1)
    • 🔖 Snippets (3)
      • Javascript (3)
    • ⚙️ Devops (22)
      • ⛏ Git (11)
      • 🐳 Docker (6)
      • 🐧 Linux (3)
      • 🌈 Jenkins (1)
      • 📬 Kafka (1)
    • 💬 ETC.. (4)
      • 💻 macOS (2)
    • 🌧️ ORM (2)
      • JPA (2)
    • 🐍 Python (3)
    • 📚 Databases (15)
      • 오라클로 배우는 데이터베이스 개론과 실습(2판) (3)
      • RealMySQL 8.0 (8)
    • 🔥 Computer Science (5)
      • 📡 네트워크 (5)
    • 🏷️ 협업 (1)
    • 📜 코딩테스트 (38)
      • BAEKJOON\수학 1, 수학 2 (8)
      • BAEKJOON\재귀 (5)
      • BAEKJOON\브루트 포스 (3)
      • BAEKJOON\정렬 (1)
      • BAEKJOON\백트래킹 (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\이분탐색 (1)
      • BAEKJOON\다이나믹 프로그래밍 (9)
      • BAEKJOON\그리디 알고리즘 (0)
    • ✨ ISEUNGHAN (1)

인기 글

최근 글

전체
오늘
어제
반응형
hELLO · Designed By 정상우.
iseunghan
7. IoC 컨테이너 6부 : Environment 2부. 프로퍼티
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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