[Spring] ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธ (8) - ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ

2022. 3. 14. 20:24ยทSpring

๐Ÿ“Œ ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜ ํ’€์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์†Œ์ผ“์ฒ˜๋Ÿผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์‹œ์ ์— ํ•„์š”ํ•œ ์—ฐ๊ฒฐ์„ ๋ฏธ๋ฆฌ ํ•ด๋‘๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ ์‹œ์ ์— ์—ฐ๊ฒฐ์„ ๋ชจ๋‘ ์ข…๋ฃŒํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ์ฒด์˜ ์ดˆ๊ธฐํ™”์™€ ์ข…๋ฃŒ ์ž‘์—… ํ•„์š”

 

 ๐Ÿ“Œ ์Šคํ”„๋ง ๋นˆ์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด

์Šคํ”„๋ง ๋นˆ์€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์˜์กด๊ด€๊ณ„๋ฅผ ์ฃผ์ž…ํ•˜๋Š” ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ฐ€์ง„๋‹ค. ์ด ๋‹จ๊ณ„๊ฐ€ ๋‹ค ๋๋‚˜๊ณ ๋‚˜์„œ์•ผ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ดˆ๊ธฐํ™” ์ž‘์—…์€ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์ด ๋ชจ๋‘ ์™„๋ฃŒ๋˜๊ณ  ๋‚œ ๋’ค ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค. ์Šคํ”„๋ง์€ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์ด ์™„๋ฃŒ๋˜๋ฉด ์Šคํ”„๋ง ๋นˆ์—๊ฒŒ ์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐํ™” ์‹œ์ ์„ ์•Œ๋ ค์ฃผ๊ณ , ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ์†Œ๋ฉธ ์ฝœ๋ฐฑ์„ ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋นˆ์˜ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์ด ๋๋‚œ ์‹œ์ ๊ณผ ์†Œ๋ฉธ ์ง์ „ ์‹œ์ ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

โ€ป์ฐธ๊ณ โ€ป : ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ถ€๋ถ„๊ณผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ถ€๋ถ„์„ ๋ช…ํ™•ํžˆ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ์œ ์ง€๋ณด์ˆ˜ ๊ด€์ ์—์„œ ์ข‹์Œ

 

โœ… ์Šคํ”„๋ง ๋นˆ์˜ ์ด๋ฒคํŠธ ๋ผ์ดํ”„์‚ฌ์ดํด

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ → ์Šคํ”„๋ง ๋นˆ ์ƒ์„ฑ → ์˜์กด๊ด€๊ณ„ ์ฃผ์ž… → ์ดˆ๊ธฐํ™” ์ฝœ๋ฐฑ → ๋นˆ ์‚ฌ์šฉ → ์†Œ๋ฉธ ์ „ ์ฝœ๋ฐฑ → ์Šคํ”„๋ง ์ข…๋ฃŒ 

  • ์ดˆ๊ธฐํ™” ์ฝœ๋ฐฑ : ๋นˆ์ด ์ƒ์„ฑ๋˜๊ณ , ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์ด ์™„๋ฃŒ๋œ ํ›„ ํ˜ธ์ถœ
  • ์†Œ๋ฉธ์ „ ์ฝœ๋ฐฑ : ๋นˆ์ด ์†Œ๋ฉธ๋˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ

 

 ๐Ÿ“Œ ์Šคํ”„๋ง์˜ ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ ์ง€์›

โœ… ์ธํ„ฐํŽ˜์ด์Šค InitializingBean, DisposableBean

  • ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋  ํด๋ž˜์Šค๋Š” InitializingBean, DisposableBean์„ ์ƒ์†๋ฐ›๋Š”๋‹ค.
  • ์ดˆ๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜๋Š” afterPropertiesSet()์„ override ํ•œ๋‹ค.
  • ์†Œ๋ฉธ์„ ์ง€์›ํ•˜๋Š” destory()๋ฅผ override ํ•œ๋‹ค.

 

๐Ÿ”ป ๋‹จ์ 

  • ์ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์Šคํ”„๋ง ์ „์šฉ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. 
  • ์ดˆ๊ธฐํ™”, ์†Œ๋ฉธ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋‚ด๊ฐ€ ์ฝ”๋“œ๋ฅผ ๊ณ ์น  ์ˆ˜ ์—†๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ง€๊ธˆ์€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋“ค์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

โœ… ๋นˆ ๋“ฑ๋ก ์ดˆ๊ธฐํ™”, ์†Œ๋ฉธ ๋ฉ”์„œ๋“œ ์ง€์ •

  • ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋  ํด๋ž˜์Šค์— ์ดˆ๊ธฐํ™”, ์†Œ๋ฉธ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•œ๋‹ค.
  • ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•  ๋•Œ @Bean(initMethod = "init", destoryMethod = "close") ์ฒ˜๋Ÿผ ์ดˆ๊ธฐํ™”, ์†Œ๋ฉธ ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ”ป ํŠน์ง•

  • ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ์ž์œ ๋กญ๊ฒŒ ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • ์Šคํ”„๋ง ๋นˆ์ด ์Šคํ”„๋ง ์ฝ”๋“œ์— ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ์„ค์ • ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ๊ณ ์น  ์ˆ˜ ์—†๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋„ ์ดˆ๊ธฐํ™”, ์ข…๋ฃŒ ๋ฉ”์„œ๋“œ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋Œ€๋ถ€๋ถ„ ์ข…๋ฃŒ ๋ฉ”์„œ๋“œ๋Š” close, shutdown์ด๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„๋‹ค. destroy ์†์„ฑ์€ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์„ ์ถ”๋ก ํ•˜์—ฌ ์ข…๋ฃŒ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์ข…๋ฃŒ ๋ฉ”์„œ๋“œ๋ฅผ close ๋˜๋Š” shutdown์œผ๋กœ ์„ค์ •ํ–ˆ์„ ๊ฒฝ์šฐ ๋”ฐ๋กœ ๋ช…์‹œํ•ด์ฃผ์ง€ ์•Š์•„๋„ ์ž˜ ๋™์ž‘ํ•œ๋‹ค.
  • ์ถ”๋ก  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์œผ๋ฉด destroyMethod=""์ฒ˜๋Ÿผ ๋นˆ ๊ณต๋ฐฑ์„ ์ง€์ •ํ•œ๋‹ค.

 

โœ… ์• ๋…ธํ…Œ์ด์…˜ @PostConstruct, @PreDestroy

  • ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋  ํด๋ž˜์Šค์˜ ์ดˆ๊ธฐํ™” ๋ฉ”์„œ๋“œ์™€ ์†Œ๋ฉธ ๋ฉ”์„œ๋“œ์— ๊ฐ๊ฐ @PostConstruct, @PreDestroy ์• ๋…ธํ…Œ์ด์…˜์„ ๋ถ™์—ฌ์ค€๋‹ค.
  • ๊ฐ€์žฅ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ดˆ๊ธฐํ™”์™€ ์ข…๋ฃŒ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ”ป ํŠน์ง•

  • ์ตœ์‹  ์Šคํ”„๋ง์—์„œ ๊ฐ€์žฅ ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • ์Šคํ”„๋ง์— ์ข…์†์ ์ธ ๊ธฐ์ˆ ์ด ์•„๋‹Œ ์ž๋ฐ” ํ‘œ์ค€์ด๋‹ค. ๋”ฐ๋ผ์„œ ์Šคํ”„๋ง์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์—์„œ๋„ ๋™์ž‘ํ•œ๋‹ค.
  • ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž˜ ์–ด์šธ๋ฆฐ๋‹ค.
  • ์œ ์ผํ•œ ๋‹จ์ ์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์ ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๊ฒฝ์šฐ @Bean์—์„œ ์ดˆ๊ธฐํ™”์™€ ์†Œ๋ฉธ ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ž!

๊ฐ•์˜ ๋งํฌ

 

์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์Šคํ”„๋ง ์ž…๋ฌธ์ž๊ฐ€ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด์„œ ์Šคํ”„๋ง์˜ ํ•ต์‹ฌ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ , ์Šคํ”„๋ง ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํ™•์‹คํžˆ ๋‹ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., - ๊ฐ•์˜ ์†Œ๊ฐœ | ์ธํ”„๋Ÿฐ...

www.inflearn.com

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

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

[Spring] ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธ (9) - ๋นˆ ์Šค์ฝ”ํ”„  (0) 2022.03.15
[Spring] ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธ (7) - ์˜์กด ๊ด€๊ณ„ ์ž๋™ ์ฃผ์ž…  (0) 2022.03.13
[Spring] ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธ (6) - ์ปดํฌ๋„ŒํŠธ ์Šค์บ”  (0) 2022.03.13
'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring] MVC 1ํŽธ (1) - ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ดํ•ด
  • [Spring] ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธ (9) - ๋นˆ ์Šค์ฝ”ํ”„
  • [Spring] ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธ (7) - ์˜์กด ๊ด€๊ณ„ ์ž๋™ ์ฃผ์ž…
  • [Spring] ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธ (6) - ์ปดํฌ๋„ŒํŠธ ์Šค์บ”
Sue
Sue
๊ฐœ๋ฐœ ๊ณต๋ถ€ ๋กœ๊ทธ
  • Sue
    Sue's devlog
    Sue
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (122)
      • Algorithm (2)
      • WEB (8)
      • Java & Kotlin (83)
      • Spring (26)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
Sue
[Spring] ํ•ต์‹ฌ ์›๋ฆฌ ๊ธฐ๋ณธ (8) - ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”