새소식

반응형
Java/Spring

@Value, @ConfigurationProperties 어노테이션

  • -
반응형

Spring 에서 프로퍼티 파일에 있는 설정값들을 불러오기 위해선 다양한 방법이 존재하지만

대표적인 방식이 @Value 와 @ConfigurationProperties 어노테이션이다.

 

  @Value @ConfigurationProperties
주입 형식 단일값 주입 N개 주입(여러개 주입 가능)
RelaxedBinding X O

 

@ConfigurationProperties 어노테이션은 RelaxedBinding 이 적용되므로 보다 유연하게 값을 바인딩할 수 있다.

RelaxedBinding 이란 값이 정확히 일치하지 않아도 유연하게 값을 바인딩 할 수 있게 인식한다.

대표적으로 Camel Case 와 Snake Case 로 설정된 설정값들을 동일한 설정으로 이해하며, 우선순위에 따라

1개의 값으로 설정한다.

 

 

 

@Value 어노테이션

@Value 어노테이션은 프로퍼티 파일에서 단일값을 가져오기 위해 사용된다.

RelaxedBinding 이 적용되지 않으므로 완벽히 일치하는 프로퍼티명을 설정해야한다.

사용하는 방법은 @Value("${property 명}") 형식으로 사용된다.

 

// application.yml
spring:
  datasource:
    hikari:
      driver-class-name: org.mariadb.jdbc.Driver
      jdbc-url: jdbc:mariadb://192.168.56.1:3306/(db명)
      username: (username)
      password: (password)


// java
@Value("${spring.datasource.hikari.driver-class-name}")
private String driver_class_name;

@Value("${spring.datasource.hikari.jdbc-url}")
private String jdbc_url;

@Value("${spring.datasource.hikari.username}")
private String username;

@Value("${spring.datasource.hikari.password}")
private String password;

 

 

@Value 어노테이션의 특징

  • 단일값을 주입하기 위해서 사용한다.
  • RelaxedBinding 이 적용되지 않으므로 정확한 이름의 property 명을 설정해야한다.

 

 

@ConfigurationProperties 어노테이션

@ConfigurationProperties 어노테이션을 사용하면 spring.datasource.hikari 를 prefix 로 가지는 프로퍼티값들을

한번에 주입할 수 있다.

 

// application.yml
spring:
  datasource:
    hikari:
      driver-class-name: org.mariadb.jdbc.Driver
      jdbc-url: jdbc:mariadb://192.168.56.1:3306/(db명)
      username: (username)
      password: (password)


// java
@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public HikariConfig hikariConfig() {
    return new HikariConfig();
}

 

@ConfigurationProperties 어노테이션을 사용할 때 주의사항은 prefix 로 설정된 프로퍼티값들은

Kebab Case 로 정의되어야 한다. prefix 하위에 존재하는 값들은 RelaxedBinding 에 의해서

Kebab Case, Camel Case, Snake Case 로 작성된 프로퍼티값들은 모두 Camel Case 로 바인딩 된다.

 

 

반응형

'Java > Spring' 카테고리의 다른 글

Mybatis foreach, selectkey, Auto Increment 구현  (0) 2024.09.02
Spring Security Filter 등록 및 실행 순서  (0) 2024.08.30
Spring Security Filter Chain  (0) 2024.06.17
Array(배열) 과 ArrayList 차이  (0) 2024.05.29
Stream(스트림)이란?  (0) 2024.05.24
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.