nyximos.log

[Spring] ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ ๋ณธ๋ฌธ

Programming/Spring

[Spring] ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ

nyximos 2022. 1. 18. 22:59

๐Ÿ‘ถ ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ ์‹œ์ž‘

๊ฐ์ฒด์˜ ์ดˆ๊ธฐํ™”์™€ ์ข…๋ฃŒ ์ž‘์—… ํ•„์š”

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

 

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

๊ฐ์ฒด ์ƒ์„ฑ → ์˜์กด๊ด€๊ณ„ ์ฃผ์ž… (๋ฐ์ดํ„ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ค€๋น„ ์™„๋ฃŒ)

๊ฐœ๋ฐœ์ž๋Š” ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์ด ์™„๋ฃŒ๋œ ์‹œ์ ์— ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค.

์Šคํ”„๋ง์€ ์Šคํ”„๋ง ๋นˆ์—๊ฒŒ ์ฝœ๋ฐฑ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐํ™” ์‹œ์ ์„ ์•Œ๋ ค์ฃผ๊ณ ๊ณผ ์ข…๋ฃŒ ์ง์ „ ์†Œ๋ฉธ ์ฝœ๋ฐฑ์„ ์ค€๋‹ค!

 

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

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

 

๐Ÿ“Œ ์ดˆ๊ธฐํ™” ์ฝœ๋ฐฑ

๋นˆ์ด ์ƒ์„ฑ๋˜๊ณ , ๋นˆ์˜ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์ด ์™„๋ฃŒ๋œ ํ›„ ํ˜ธ์ถœ

 

๐Ÿ“Œ์†Œ๋ฉธ์ „ ์ฝœ๋ฐฑ

๋นˆ์ด ์†Œ๋ฉธ๋˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ

 

 

์Šคํ”„๋ง๋นˆ์€ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ์„ ์ง€์›ํ•œ๋‹ค.

  1. ์ธํ„ฐํŽ˜์ด์Šค InitializingBean, DisposableBean
  2. ์„ค์ • ์ •๋ณด์— ์ดˆ๊ธฐํ™” ๋ฉ”์„œ๋“œ, ์ข…๋ฃŒ ๋ฉ”์„œ๋“œ ์ง€์ •
  3. @PostConstruct, @PreDestroy ์• ๋…ธํ…Œ์ด์…˜ ์ง€์ •



๐Ÿคน‍โ™‚๏ธ ์ธํ„ฐํŽ˜์ด์Šค InitializingBean, DisposableBean

๐Ÿ“Œ InitializingBean

afterPropertiesSet() ๋ฉ”์„œ๋“œ๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ์ง€์›ํ•œ๋‹ค.

 

๐Ÿ“Œ DisposableBean

destroy() ๋ฉ”์„œ๋“œ๋กœ ์†Œ๋ฉธ์„ ์ง€์›ํ•œ๋‹ค.

 

๋‹จ์ 

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

→ ์ตœ๊ทผ์—๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ!

 

๐Ÿคน‍โ™‚๏ธ ๋นˆ ๋“ฑ๋ก ์ดˆ๊ธฐํ™”, ์†Œ๋ฉธ ๋ฉ”์„œ๋“œ ์ง€์ •

์„ค์ • ์ •๋ณด์— @Bean(initMethod="init", destroyMethod="close") ์ฒ˜๋Ÿผ ์ดˆ๊ธฐํ™”, ์†Œ๋ฉธ ๋ฉ”์„œ๋“œ ์ง€์ •

 

์„ค์ • ์ •๋ณด ์‚ฌ์šฉ ํŠน์ง•

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

 

์ข…๋ฃŒ ๋ฉ”์„œ๋“œ ์ถ”๋ก 

  • @Bean์˜ destroyMethod ์†์„ฑ์—๋Š” ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค.
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋Œ€๋ถ€๋ถ„ close, shutdown์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ข…๋ฃŒ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • @Bean์˜ destroyMethod๋Š” ๊ธฐ๋ณธ๊ฐ’์ด inferred(์ถ”๋ก )์œผ๋กœ ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค.
  • inferred ๊ธฐ๋Šฅ์€ close, shutdown์ด๋ผ๋Š” ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•ด์ค€๋‹ค. →์ข…๋ฃŒ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๋ก ํ•˜์—ฌ ํ˜ธ์ถœ
  • ์ง์ ‘ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๋ฉด ์ข…๋ฃŒ ๋ฉ”์„œ๋“œ๋ฅผ ์ ์–ด์ฃผ์ง€ ์•Š์•„๋„ ์ž˜ ๋™์ž‘ํ•œ๋‹ค.
  • destroyMethod="" : ๋นˆ๊ณต๋ฐฑ ์ง€์ •ํ• ์‹œ ์ถ”๋ก ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป

 

 

๐Ÿคน‍โ™‚๏ธ ์• ๋…ธํ…Œ์ด์…˜ @PostConstruct, @PreDestroy

@PostConstruct, @PreDestroy๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ดˆ๊ธฐํ™”์™€ ์ข…๋ฃŒ ์‹คํ–‰ํ•œ๋‹ค.

 

ํŠน์ง•

  • ์ตœ์‹  ์Šคํ”„๋ง์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • ์• ๋…ธํ…Œ์ด์…˜๋งŒ ๋ถ™์—ฌ์„œ ํŽธ๋ฆฌํ•˜๋‹ค.
  • ํŒจํ‚ค์ง€ - javax.annotation.PostConstruct
    → JSR-250์ด๋ผ๋Š”์ž๋ฐ” ํ‘œ์ค€ ๐Ÿ™†‍โ™€๏ธ ์Šคํ”„๋ง ์ข…์†๐Ÿ™…‍โ™€๏ธ
    →์Šคํ”„๋ง์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์—์„œ๋„ ๋™์ž‘
  • ์ปดํฌ๋„ŒํŠธ ์Šค์บ”์ด๋ž‘ ์ž˜์–ด์šธ๋ฆฐ๋‹ค.
  • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค.
    • ์™ธ๋ถ€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ดˆ๊ธฐํ™”, ์ข…๋ฃŒํ•ด์•ผํ•  ์‹œ @Bean์˜ initMethod, destroyMethod ์‚ฌ์šฉํ•˜์ž!

 

 

์ฐธ์กฐ

๊น€์˜ํ•œ, ์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ https://inf.run/ryWP

 

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

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

www.inflearn.com