본문 바로가기

[SPRING]/SPRING

[SPRING] properties 값 다른 위치에서 불러오는 4가지 찍먹

반응형

SPRING properties 값 다른 위치에서 불러오기


개발하다보면 공통 CONFIG 파일들은 따로 빼줘야 편한 경우들이 있다..

아래와 같이 설정 파일이 있다고 가정

예제 properties (or yml configuration)

properties

app.name="Sample Application"
app.version=0.0.1-SNAPSHOT
app.base-key=myKey

yml

app:
    name: Sample Application
    version: 0.0.1-SNAPSHOT
    base-key: myKey

사용 방법 4가지 공유하니 그 중에 찍먹하면 된다


1. @Value 어노테이션을 이용하여 변수에 직접 할당하는 방법

    @Named
    public class MyClass {

        @Value("${app.name}")
        private String appName;

        @Value("${app.version}")
        private String appVersion;

        @Value("${app.base-key}")
        private String appBaseKey;


        public void myMethod() {
            System.out.println(String.format("appName    : %s", appName));
            System.out.println(String.format("appVersion : %s", appVersion));
            System.out.println(String.format("appBaseKey : %s", appBaseKey));
        }
    }

2. @ConfigurationProperties 어노테이션을 사용하여 Bean 으로 매핑.

@Data
@Named
@ConfigurationProperties(prefix = "app")
public class AppConfig {

    private String name;
    private String version;
    private String baseKey;
}
@Named
public class MyClass {

    @Inject
    private AppConfig appConfig;

    public void myMethod() {
        System.out.println(String.format("appName    : %s", appConfig.getName()));
        System.out.println(String.format("appVersion : %s", appConfig.getVersion()));
        System.out.println(String.format("appBaseKey : %s", appCOnfig.getBaseKey()));
    }
}

3. Configuration 에서 @ConfigurationProperties 어노테이션을 사용하여 Bean 으로 매핑.

@Data
public class AppConfig {

    private String name;
    private String version;
    private String baseKey;
}
@Configuration
public class MyConfig {

    @Bean
    @ConfigurationProperties(prefix = "app")
    public AppConfig appConfig() {
        return new AppConfig();
    }
}
@Named
public class MyClass {

    @Inject
    private AppConfig appConfig;

    public void myMethod() {
        System.out.println(String.format("appName    : %s", appConfig.getName()));
        System.out.println(String.format("appVersion : %s", appConfig.getVersion()));
        System.out.println(String.format("appBaseKey : %s", appCOnfig.getBaseKey()));
    }
}

4. Environment 를 주입받아 property key 로 직접 획득.

@Named
public class MyClass {

    @Inject
    private Environment environment;

    public void myMethod() {
        System.out.println(String.format("appName    : %s", environment.getProperty("app.name")));
        System.out.println(String.format("appVersion : %s", environment.getProperty("app.version")));
        System.out.println(String.format("appBaseKey : %s", environment.getProperty("app.base-key")));
    }
}
반응형