Home
>
Spring
>
π[Spring] `@Configuration`μ΄λ 무μμΌκΉμ?
Spring
Framework
π[Spring] @Configuration
μ΄λ 무μμΌκΉμ?
-
@Configuration
μ Spring Frameworkμμ μ¬μ©λλ μ λν
μ΄μ
μΌλ‘, μ€νλ§ μ»¨ν
μ΄λμ μ€μ ν΄λμ€μμ λͺ
μνλ μν μ ν©λλ€.
- μ΄ μ λν
μ΄μ
μ΄ λΆμ ν΄λμ€λ Bean μ€μ λ©νλ°μ΄ν°λ₯Ό μ μνλλ° μ¬μ©λ©λλ€.
- μ΄λ₯Ό ν΅ν΄ κ°λ°μλ
application.properties
λ application.yml
μ€μ μ λμ νμ¬ Java κΈ°λ°μ μ€μ μ μμ±ν μ μλ λ°©λ²μ μ¬κ³΅ν©λλ€.
- κ·Έλ¬λ
@Configuration
μ΄ application.properties
λ application.yml
νμΌ μ체λ₯Ό μμ ν λ체νλ€λ κ²μ μλλλ€.
- μ΄ λ κ°μ§λ μλ‘ λ³΄μμ μΈ μν μ ν©λλ€.
1οΈβ£ @Configuration
κ³Ό application.properties/application.yml
μ κ΄κ³
1οΈβ£ application.properties/application.yml
- μ£Όλ‘ νκ²½ μ€μ κ°μ μΈλΆννμ¬ μ μνλ λ° μ¬μ©λ©λλ€.
- λ°μ΄ν°λ² μ΄μ€ URL, μ¬μ©μ μ΄λ¦, λΉλ°λ²νΈ, ν¬νΈμ κ°μ μ€μ κ°μ λ΄μ΅λλ€.
- νμΌ κΈ°λ° μ€μ μ΄λ©°, μ€νλ§μ΄ μλμΌλ‘ μ½μ΄μ νμν κ³³μ μ£Όμ
ν©λλ€.
2οΈβ£ @Configuration
- Java μ½λλ‘ λͺ
μμ μΌλ‘ Beanκ³Ό μ€μ μ μ μν©λλ€.
-
@Bean
λ©μλλ₯Ό ν΅ν΄ λμ μΈ μ€μ λ‘μ§μ΄λ 볡μ‘ν κ°μ²΄ μμ± λ‘μ§μ λ΄μ μ μμ΅λλ€.
- μ€μ κ°μ νλ‘κ·Έλλ°μ μΌλ‘ μ²λ¦¬νκ±°λ νΉμ 쑰건μ λ°λΌ λμ μΌλ‘ ꡬμ±ν΄μΌ ν λ μ μ©ν©λλ€.
2οΈβ£ μμ : Java κΈ°λ° μ€μ μΌλ‘ application.properties λ체νκΈ°.
π κΈ°μ‘΄ application.properties μ€μ .
app.name=MyApplication
app.version=1.0.0
π Java κΈ°λ° μ€μ μΌλ‘ λ체.
@Configuration
public class AppConfig {
@Bean
public String appName() {
return "MyApplication";
}
@Bean
public String appVersion() {
return "1.0.0";
}
}
- μ΄λ κ² νλ©΄ μ€νλ§ μ»¨ν
μ΄λμμ appNameκ³Ό appVersionμ΄λΌλ μ΄λ¦μ Beanμ μ¬μ©ν μ μμ΅λλ€.
3οΈβ£ @Configuration
κ³Ό application.properties
λ₯Ό ν¨κ» μ¬μ©νλ λ°©λ².
- λλΆλΆμ κ²½μ°, Java κΈ°λ° μ€μ μ
application.properties
λ application.yml
μ μ μλ κ°μ μ½μ΄μ μΆκ°μ μΌλ‘ μ²λ¦¬νλ λ°©μμΌλ‘ μ¬μ©λ©λλ€.
1οΈβ£ μμ : @Configuration
μμ application.properties
μ¬μ©
1οΈβ£ application.properties νμΌ.
app.name=MyApplication
app.version=1.0.0
2οΈβ£ @Configuration
ν΄λμ€
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Value("${app.name}")
private String appName;
@Value("${app.version}")
private String appVersion;
@Bean
public AppInfo appInfo() {
return new AppInfo(appName, appVersion);
}
public static class AppInfo {
private final String name;
private final String version;
public AppInfo(String name, String version) {
this.name = name;
this.version = version;
}
public String getName() {
return name;
}
public String getVersion() {
return version;
}
}
}
- μ΄ λ°©μμμλ
application.properties
μ μ μλ κ°μ @Value
λ‘ μ£Όμ
λ°μ Java μ½λμμ νμ©ν μ μμ΅λλ€.
4οΈβ£ μΈμ Java κΈ°λ° μ€μ μ μ¬μ©ν κΉ?
-
λμ λ‘μ§μ΄ νμν κ²½μ°.
- νΉμ 쑰건μ λ°λΌ Beanμ λ€λ₯΄κ² μ€μ ν΄μΌ νλ κ²½μ°.
- 볡μ‘ν κ°μ²΄ μμ± λ‘μ§μ΄ νμν κ²½μ°.
-
μ½λλ‘ λͺ
μμ μΌλ‘ μ€μ μ κ΄λ¦¬νλ €λ κ²½μ°.
- μΈλΆ μ€μ νμΌμ΄ μλ, μ½λμμ μ§μ κ΄λ¦¬νλ κ²μ΄ λ μ ν©ν κ²½μ°.
5οΈβ£ μΈμ application.propertiesλ₯Ό μ¬μ©ν κΉ?
-
νκ²½λ³ μ€μ μ κ΄λ¦¬ν λ
- κ°λ°/μ΄μ νκ²½μμ μλ‘ λ€λ₯Έ κ°μ μ½κ² κ΄λ¦¬νλ €λ κ²½μ°.
-
κ°λ¨ν μ€μ κ°
- λ¬Έμμ΄, μ«μ, λ
Όλ¦¬κ°κ³Ό κ°μ κ°λ¨ν μ€μ κ°.
6οΈβ£ κ²°λ‘ .
-
@Configuration
μ μ¬μ©νλ©΄ Java μ½λλ‘ μ€μ μ μ μν μ μκ³ , νΉμ κ²½μ°μλ application.properties
λ application.yml
μ λ체ν μλ μμ΅λλ€.
- κ·Έλ¬λ μΌλ°μ μΌλ‘λ Java μ€μ κ³Ό application.properties/application.yml νμΌμ ν¨κ» μ¬μ©νμ¬ μ μ°μ±κ³Ό κ΄λ¦¬ νΈμμ±μ λͺ¨λ μ»λ κ²μ΄ κ°μ₯ μ’μ΅λλ€.