ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • @Value - 외부 설정 사용
    스프링/스프링부트 2023. 9. 30. 21:05

    스프링이 지원하는 외부 설정 조회 방법들

    1. Environment
    2. @Value - 값 주입
    3. @ConfigurationProperties - 타입 안전한 설정 속성

     

     

    이전 포스팅에서 외부 설정을 공부하면서 사용한 Environment에는 약간의 단점이 있다. Environment 를 직접 주입받고, env.getProperty(key) 를 통해서 값을 꺼내는 과정을 반복해야 한다는 점이다.

     

    따라서 스프링은 @Value를 통해서 외부 설정값을 주입받는 편리한 기능을 제공해준다.

     

     

    @Slf4j
    @Configuration
    public class MyDataSourceValueConfig {
    
        @Value("${my.datasource.url}")
        private String url;
        @Value("${my.datasource.username}")
        private String username;
        @Value("${my.datasource.password}")
        private String password;
        @Value("${my.datasource.etc.max-connection}")
        private int maxConnection;
        @Value("${my.datasource.etc.timeout}")
        private Duration timeout;
        @Value("${my.datasource.etc.options}")
        private List<String> options;
        
        @Bean
        public MyDataSource myDataSource1() {
            return new MyDataSource(url, username, password, maxConnection, timeout, options);
        }
    }

    @Value 어노테이션을 사용해서 application.properties에 있는 값들을 가져다 쓸 수 있다.

    @Value("${key 값}")을 입력하면 자동으로 매핑해준다.

     

    프로젝트를 할 때 AWS 키 값을 @Value 어노테이션으로 가져온 것을 생각해보면 된다.

     

     

    @Slf4j
    @Configuration
    public class MyDataSourceValueConfig {
        @Bean
        public MyDataSource myDataSource2(
                @Value("${my.datasource.url}") String url,
                @Value("${my.datasource.username}") String username,
                @Value("${my.datasource.password}") String password,
                @Value("${my.datasource.etc.max-connection}") int maxConnection,
                @Value("${my.datasource.etc.timeout}") Duration timeout,
                @Value("${my.datasource.etc.options}") List<String> options) {
            return new MyDataSource(url, username, password, maxConnection, timeout, options);
        }
    }

    파라미터로 @Value를 넘겨줘도 된다.

     

     

    @Value 어노테이션은 타입을 자동으로 매핑해준다. int, String 등 어떤 타입이든 알아서 자동으로 설정된다.

     

     

     

    기본값

    @Value("${my.datasource.etc.max-connection:2}")
    private int maxConnection;

    key값 뒤에 :value를 붙여주면 default 값이 된다. application에 my.datasource.etc.max-connection이라는 key 값이 없으면 자동으로 2라는 값이 들어가는 것이다.

     

     

     

    @Value 어노테이션 방식도 하나하나 외부 설정 정보의 키 값을 입력받고 주입받아와야 하는 부분이 번거로움이 있고, 설정 데이터를 보면 묶음으로 되어있기 때문에 이런 부분을 객체로 변환하는 편리한 기능을 스프링에서 또 지원해준다.

    다음 포스팅은 이 기능인 @ConfigurationProperties에 대한 내용이다.

    '스프링 > 스프링부트' 카테고리의 다른 글

    YAML  (0) 2023.09.30
    @ConfigurationProperties - 외부 설정 사용  (0) 2023.09.30
    외부 설정의 우선순위  (0) 2023.09.30
    외부 설정 4 - 설정 데이터  (0) 2023.09.30
    외부 설정 - 스프링 통합  (0) 2023.09.30
Designed by Tistory.