Home > Backend Development > ๐Ÿ“š[Backend Development] ๋นˆ(Bean)๊ณผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ(Spring Container)

๐Ÿ“š[Backend Development] ๋นˆ(Bean)๊ณผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ(Spring Container)
Backend Ddevelopment Database Server Build System

๐Ÿ“š[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๋ฅผ ์‹คํ˜„ํ•˜๋Š” ํ•ต์‹ฌ ๊ตฌ์กฐ