๐[Backend Development] ๋น(Bean)๊ณผ ์คํ๋ง ์ปจํ ์ด๋(Spring Container)
Bean๊ณผ Spring Container๋ Spring Framework์ ํต์ฌ ๊ฐ๋ ์ผ๋ก, ์คํ๋ง์ด ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ์ดํดํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
โ 1. ๋น(Bean)์ด๋?
๐ ์ ์
์คํ๋ง ์ปจํ ์ด๋์ ์ํด ์์ฑ๋๊ณ ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด
- ๊ฐ๋ฐ์๊ฐ @Component, @Service, @Repository, @Configuration, @Bean ๋ฑ์ ์ด๋ ธํ ์ด์ ์ผ๋ก ๋ฑ๋กํ๋ฉด ์คํ๋ง์ด ํด๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์์กด์ฑ์ ์ฃผ์ ํ๋ฉฐ, ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
๐งBean์ ์์
@Component
public class UserService {
// ์ด ํด๋์ค๋ ์คํ๋ง ๋น์ด๋ค.
}
๋๋
@Configuration
public class AppConfig {
@Bean
public ArticleService articleService() {
retutn new ArticleService();
}
}
โ 2. ์คํ๋ง ์ปจํ ์ด๋(Spring Container)๋?
๐ ์ ์
๋น์ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด ์ ์ฅ์
- ApplicationContext ๋๋ BeanFactory๊ฐ ๋ํ์ ์ธ ์ปจํ ์ด๋์ ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์คํ ์ ์ปจํ ์ด๋๊ฐ ์ด๊ธฐํ๋๋ฉฐ, ๋ด๋ถ์ Bean ๊ฐ์ฒด๋ค์ ์ฑ๊ธํค์ผ๋ก ๋ณด๊ดํ๊ณ ๊ด๋ฆฌํฉ๋๋ค.
๐ง ๋น์
โ์คํ๋ง ์ปจํ ์ด๋๋ ๋น์ ๋ด๋ ๊ฐ์ฒด ์ฐฝ๊ณ ๋ค. ํ์ํ ๊ฐ์ฒด(Bean)๋ฅผ ๊บผ๋ด ์ฐ๋ฉด ๋๋ค.โ
โ๏ธ ์ฃผ์ ์ญํ
- Bean ์์ฑ ๋ฐ ์ด๊ธฐํ
- ์์กด์ฑ ์ฃผ์ (DI)
- Bean ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ(@PostConstruct, @PreDestory ๋ฑ)
- AOP ๊ธฐ๋ฅ ์ ๊ณต
โ ๊ด๊ณ ์ ๋ฆฌ
๊ฐ๋ | ์ค๋ช |
---|---|
Bean | ์คํ๋ง์ด ๊ด๋ฆฌํ๋ ๊ฐ์ฒด |
Container | Bean๋ค์ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ์คํ๋ง์ ํต์ฌ ์์ง |
๋ฑ๋ก ๋ฐฉ๋ฒ | @Component, @Service, @Repository, @Configuration + @Bean ๋ฑ |
์ ๊ณต ํด๋์ค | ApplicationContext, AnnotationConfigApplicatioonContext, WebAppplicationContext ๋ฑ |
โ ๊ทธ๋ฆผ์ผ๋ก ๋น์
[Spring Container]
โโโ UserService (Bean)
โโโ ArticleService (Bean)
โโโ UserRepository (Bean)
โโโ DataSource (Bean)
โ ๊ฐ๋ฐ์๋ ์ง์ new ํ์ง ์๊ณ , ์คํ๋ง์ด ๋์ ์์ฑํด์ฃผ๋ Bean์ ๋ฐ์์ ์ฌ์ฉํฉ๋๋ค.
โ ์์ฝ
๊ฐ๋ | ์ค๋ช |
---|---|
Bean | ์คํ๋ง์ด ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด |
Spring Container | Bean์ ์์ฑ, ์ฃผ์ , ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด ์ ์ฅ์ |
์๋ฏธ | IoC/DI๋ฅผ ์คํํ๋ ํต์ฌ ๊ตฌ์กฐ |