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 ํ์ผ์ ํจ๊ป ์ฌ์ฉํ์ฌ ์ ์ฐ์ฑ๊ณผ ๊ด๋ฆฌ ํธ์์ฑ์ ๋ชจ๋ ์ป๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.