본문 바로가기

개발/Spring

IoC - Environment - 프로퍼티

반응형

키 벨류 상으로 되어 있는 프로퍼티에 접근 하여 사용
계층 형 으로 제공됨. 
OS의 환경 변수, 자바 실행시 옵션 값 등에 전달된 키 벨류 값을 이용.

1. VM 옵션

package com.bpkim.demospring51;

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;

@Component
public class AppRunner implements ApplicationRunner {

    @Autowired
    ApplicationContext ctx;

    @Autowired
    BookRepository bookRepository;

    @Override
    public void run(ApplicationArguments args) throws Exception{
        Environment environment = ctx.getEnvironment();

        // enviroment의 첫번째 프로파일
        // 등록된 프로파일 확인
        System.out.println(Arrays.toString(environment.getActiveProfiles()));
        // default 파일 확인
        // 어떤 프로파일이든 기본으로 설정되는 파일
        System.out.println(Arrays.toString(environment.getDefaultProfiles()));


        // enviroment의 두번째 프로파일
        // 프로퍼티
        System.out.println(environment.getProperty("app.name"));
    }
}

- 실행확인

2. properties 파일
 - 파일 생성

 - 내용 

- 소스 파일 설정 

package com.bpkim.demospring51;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.GenericApplicationContext;

@SpringBootApplication
@PropertySource("classpath:/app.properties") //프로퍼티 파일 설정
public class Demospring51Application {

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

}

- 확인

 

*** VM 옵션의 프로퍼티 vs properties 파일의 프로퍼티 둘중 누가더 우선순위를 가질까 ?_?
둘다 app.name 으로 설정하여 확인 해보자

package com.bpkim.demospring51;

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;

@Component
public class AppRunner implements ApplicationRunner {

    @Autowired
    ApplicationContext ctx;

    @Autowired
    BookRepository bookRepository;

    @Override
    public void run(ApplicationArguments args) throws Exception{
        Environment environment = ctx.getEnvironment();

        // enviroment의 첫번째 프로파일
        // 등록된 프로파일 확인
        System.out.println(Arrays.toString(environment.getActiveProfiles()));
        // default 파일 확인
        // 어떤 프로파일이든 기본으로 설정되는 파일
        System.out.println(Arrays.toString(environment.getDefaultProfiles()));


        // enviroment의 두번째 프로파일
        // vm 설정
        System.out.println(environment.getProperty("app.name"));
        // properties 파일
//        System.out.println(environment.getProperty("app.about"));
    }
}

- 확인

 VM옵션에 설정한 프로퍼티가 나온다! vm 옵션이 우선!

 

반응형

'개발 > Spring' 카테고리의 다른 글

IoC - ApplicationEventPublisher  (0) 2021.04.11
IoC - MessageSource  (0) 2021.04.11
IoC - Environment - 프로파일  (0) 2021.04.10
IoC - 빈의 스코프  (0) 2021.04.06
IoC - Component, 컴포넌트 스캔  (0) 2021.04.06