๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/WEB

[37์ผ์ฐจ] Spring Bean

by GWLEE 2022. 8. 11.

๐Ÿ’•2022-08-11๐Ÿ’•

 

์Šคํ”„๋ง๊ฐ์ฒด๊ฐ€  ์ƒ์„ฑ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด = bean

์Šคํ”„๋ง bean

 

๊ฐ์ฒด๋Š” ๊ฐ์ฒด์ธ๋ฐ ์Šคํ”„๋ง์„ ๊ด€๋ฆฌ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ํ†ค ํ•˜๋‚˜๋งŒ ๋งŒ๋“ ๋‹ค.

์Šคํ”„๋ง์€ ํฌ์กฐ๊ธฐ๋ฐ˜

์Šคํ”„๋ง ์„ค์ •์œผ๋กœ ์ง€์ • @Configuration

 


 

@Bean 

 

- ์Šคํ”„๋ง์€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต

- ์Šคํ”„๋ง์ด ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๋ฅผ Bean ๊ฐ์ฒด๋ผ ํ•จ

- ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์†Œ๋“œ์— @Bean annotation์„ ์„ค์ •ํ•˜๋ฉด ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๊ฐ€ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ์Šคํ”„๋ง์ด ๊ด€๋ฆฌํ•˜๋Š” Bean ๊ฐ์ฒด๋กœ ๋“ฑ๋กํ•จ

- ํ•ด๋‹น ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์€ ์ƒ์‚ฐํ•œ Bean ๊ฐ์ฒด์˜ ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉ

 

 

IOC

Inversion Of Control

์ œ์–ด์˜ ์—ญ์ „

 

์œ„ํ‚ค๋ฐฑ๊ณผ : ์ œ์–ด์˜ ๋ฐ˜์ „

์—ญ์ œ์–ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์žฌ์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ๋ฆ„ ์ œ์–ด๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋Š” 
์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์„ ๋งํ•œ๋‹ค. ์ค„์—ฌ์„œ IoC(Inversion of Control)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ „ํ†ต์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ๋ฆ„์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ์ด์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ œ์–ด ๋ฐ˜์ „์ด ์ ์šฉ๋œ ๊ตฌ์กฐ์—์„œ๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฝ”๋“œ๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ์„ค๊ณ„ ๋ชฉ์ ์ƒ ์ œ์–ด ๋ฐ˜์ „์˜ ๋ชฉ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค


4. bean ์ด๋ฆ„๊ณผ modifier(ํ•œ์ •์ž)


1) ๋‹ค์Œ์˜ ์„ค์ •ํŒŒ์ผ ์ฐธ์กฐ



@Bean
public MemberPrinter printer() {
  return new MemberPrinter();
}

@Bean
@Qualifier("mprinter")
public MemberPrinter printer2() {
  return new MemberPrinter();
}

@Bean
public MemberInfoPrinter2 infoPrinter() {
  MemberInfoPrinter2 infoPrinter = new MemberInfoPrinter2();
  return infoPrinter;
}

• printer() ์—์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” bean์˜ modifier๋Š” bean ์ด๋ฆ„์ธ "printer"
• printer2() ์—์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” bean์˜ modifier๋Š” "mprinter"
• @Autowired ๊ฒฝ์šฐ๋„ @Qualifier ๊ฐ€ ์—†์œผ๋ฉด ํ•„๋“œ๋‚˜ ์ธ์ž์˜ ์ด๋ฆ„์„ modifier๋กœ ์‚ฌ์šฉ
• ๋‹ค์Œ์˜ ๊ฒฝ์šฐ์— printer ํ•„๋“œ์— ์ผ์น˜ํ•˜๋Š” bean์ด ๋‘ ๊ฐœ ์ด์ƒ ์กด์žฌํ•˜๋ฉด modifier๋กœ ํ•„๋“œ ์ด๋ฆ„์ธ "printer"๋ฅผ ์‚ฌ์šฉ
public class MemberInfoPrinter2 {

  @Autowired
  private MemberPrinter printer;
  
  ……
  
}

 


 

 

๋ช…์‹œ์  ์ฃผ์ž…๊ณผ ์ž๋™์ฃผ์ž…์„ ์„ž์–ด์„œ ์“ฐ๋ฉด ๋””๋ฒ„๊น… ์ง€์˜ฅ์— ๋น ์ง„๋‹ค.

์ „๋ถ€๋‹ค ์„ค์ •ํด๋ž˜์Šค์—์„œ ๋ช…์‹œ์  ์ฃผ์ž…์„ ์‹œํ‚ฌ ๊ฒƒ์ธ์ง€ ์ž๋™์ฃผ์ž…์„ ์‹น ๋‹ค ์‹œํ‚ฌ ๊ฒƒ์ธ์ง€ ๋ช…์‹œํ•ด์ค˜์•ผ

์Šคํ”„๋ง ์ž…์žฅ์—์„œ  ๋ช…์‹œ์ ์œผ๋กœ Qualifier ๋ฅผ ์จ๋‘๋Š”๊ฒŒ ์œ ์ง€๋ณด์ˆ˜์— ์ข‹๋‹ค. ๋””๋ฒ„๊น… ์ง€์˜ฅ์—์„œ ๋น ์ ธ๋‚˜์˜ค๋Š” ๊ธธ์ด๋‹ค.  

 

๋‹ด๋‹น์ž๊ฐ€ ๋ฐ”๋€Œ๋ฉด์„œ ์„ฑํ–ฅ์— ๋”ฐ๋ผ ๋ฐ”๋€” ๋•Œ .. ์œ„ํ—˜

 

 

3. ๊ธฐ๋ณธ ์Šค์บ” ๋Œ€์ƒ

 

@Componet

@Controller

@Service

@Repository

@Service

@Respository

@Aspect

@Configuration

 

- ์ปจํŠธ๋กค๋Ÿฌ @Controller (ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋ ˆ์ด์–ด, ์›น ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•จ)

- ๋กœ์ง ์ฒ˜๋ฆฌ : @Service (์„œ๋น„์Šค ๋ ˆ์ด์–ด, ๋‚ด๋ถ€์—์„œ ์ž๋ฐ”๋กœ์ง์„ ์ฒ˜๋ฆฌํ•จ)

- ์™ธ๋ถ€ I/O ์ฒ˜๋ฆฌ : @Respository (ํผ์‹œ์Šคํ„ด์Šค ๋ ˆ์ด์–ด, DB๋‚˜ ํŒŒ์ผ ๊ฐ™์€ ์™ธ๋ถ€ I/O์ž‘์—…์„ ์ฒ˜๋ฆฌํ•จ)

 


 

'IT > WEB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[38์ผ์ฐจ] AOP/ aop concert project  (0) 2022.08.12
[37์ผ์ฐจ] AutoDi  (0) 2022.08.11
[37์ผ์ฐจ] dISample project  (0) 2022.08.11
[36์ผ์ฐจ] ์Šคํ”„๋ง  (0) 2022.08.10
[36์ผ์ฐจ] Servlet. jsp  (0) 2022.08.10

๋Œ“๊ธ€