TIL/Spring

.properties와 .yml 차이

Edlin 2022. 7. 19. 14:13
  • λ‹€λ₯Έ ν™˜κ²½μ—μ„œλ„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ λ™μž‘ν•  수 μžˆλ„λ‘ μ„€μ • κ΄€λ ¨ 정보가 λ“€μ–΄μžˆλŠ” ν•˜λ‚˜μ˜ νŒŒμΌμ΄λ‹€.
  • 포트 μ„€μ •, μ–΄λ–€ λ°μ΄ν„°λ² μ΄μŠ€μ™€ 연결해쀄 것인지와 κ΄€λ ¨ν•œ 정보 등을 μ €μž₯ν•  수 μžˆλ‹€.
    • μŠ€ν”„λ§ λΆ€νŠΈμ˜ μ„œλ²„λ²ˆν˜ΈλŠ” 8080이 default μ΄μ§€λ§Œ, λ‹€λ₯Έ 포트λ₯Ό μ‚¬μš©ν•˜κ³  μ‹Άλ‹€λ©΄ μ„€μ • νŒŒμΌμ— 선언해쀄 수 μžˆλ‹€. 
    • server.port = 9090
  • 두 파일 λͺ¨λ‘ μ„€μ • νŒŒμΌμ΄λΌλŠ” 곡톡점을 κ°€μ§€κ³  μžˆμ§€λ§Œ, μ„œμˆ ν•˜λŠ” 방식은 λ‹€λ₯΄λ‹€.
  • Elastric Searchλ‚˜ MongoDB databaseλŠ” YAML(.yml)을 default configuration format으둜 μ‚¬μš©ν•œλ‹€.
  • Javaμ—μ„œλŠ” 주둜 .propertiesλ₯Ό 많이 μ΄μš©ν•œλ‹€.
***.yml

# κ΅¬λΆ„μž: spacebar, (XX tab)

somemap:
    key:value 
    number:9

    map2: {bool=true, date=2022.07.19}

 

***.properties

key = value
number = 9
bool = true

YAML (.yml) .properties
key/value
map, List, Scalar μœ ν˜• 지원
key/valueλ₯Ό μ§€μ›ν•˜μ§€λ§Œ, λ¬Έμžμ—΄ μ΄μ™Έμ—λŠ” μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€
Python, Ruby, Java등에 많이 νΌμ Έμžˆλ‹€. 주둜 μžλ°”μ—μ„œ 이용
κ³„μΈ΅ν˜•κ΅¬μ‘° λΉ„κ³„μΈ΅ν˜•κ΅¬μ‘°
SpringFrameworkλŠ” @PropertySourcesλ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€. SpringFrameworkμ—μ„œ @PropertySourcesλ₯Ό μ§€μ›ν•œλ‹€.

 


@PropertySources ?

SpringFrameworkμ—μ„œ ν™˜κ²½μ„€μ • 경둜 등을 μ£Όμž…ν•  λ•Œ μ‚¬μš©ν•˜λŠ” μ–΄λ…Έν…Œμ΄μ…˜
Spring 4.0μ—μ„œ μΆ”κ°€λœ μ˜΅μ…˜

@Configuration
@PropertySource(value = {"dbProperty.properties"})
public class DBConfig {
  @Value("${dbconfig.driver}")
  private String driver;
  @Value("${dbconfig.url}")
  private String url;
  @Value("${dbconfig.username}")
  private String username;
  @Value("${dbconfig.password}")
  private String password;
  ...
}

.yml은 .properties에 λΉ„ν•΄ μ–΄λ–€ 이점이 μžˆμ„κΉŒ?

  • μ˜μ‘΄κ΄€κ³„λ‚˜, 파일 섀정정보 등을 κ³„μΈ΅ν˜•μœΌλ‘œ κ΄€λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— κ·œμΉ™μ΄λ‚˜ μœ ν˜•λ³€ν™˜μ— μžˆμ–΄μ„œ .properties보닀 효과적일 수 μžˆλ‹€.
  • μ§€μ›ν•˜λŠ” μ–Έμ–΄μ˜ 폭이 λ„“κΈ° λ•Œλ¬Έμ— λ‹€μ–‘ν•œ μ‘μš©ν”„λ‘œκ·Έλž¨μ„ μ‚¬μš©ν•˜λŠ” 경우 .yml 이 μœ λ¦¬ν•˜λ‹€.