๐ ๋น ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ํ์ด๋ ๋คํธ์ํฌ ์์ผ์ฒ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ ์ ํ์ํ ์ฐ๊ฒฐ์ ๋ฏธ๋ฆฌ ํด๋๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ข ๋ฃ ์์ ์ ์ฐ๊ฒฐ์ ๋ชจ๋ ์ข ๋ฃํ๋ ์์ ์ ์งํํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด์ ์ด๊ธฐํ์ ์ข ๋ฃ ์์ ํ์
๐ ์คํ๋ง ๋น์ ๋ผ์ดํ ์ฌ์ดํด
์คํ๋ง ๋น์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์กด๊ด๊ณ๋ฅผ ์ฃผ์ ํ๋ ๋ผ์ดํ์ฌ์ดํด์ ๊ฐ์ง๋ค. ์ด ๋จ๊ณ๊ฐ ๋ค ๋๋๊ณ ๋์์ผ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ฐ๋ผ์ ์ด๊ธฐํ ์์ ์ ์์กด๊ด๊ณ ์ฃผ์ ์ด ๋ชจ๋ ์๋ฃ๋๊ณ ๋ ๋ค ํธ์ถํด์ผ ํ๋ค. ์คํ๋ง์ ์์กด๊ด๊ณ ์ฃผ์ ์ด ์๋ฃ๋๋ฉด ์คํ๋ง ๋น์๊ฒ ์ฝ๋ฐฑ ๋ฉ์๋๋ฅผ ํตํด ์ด๊ธฐํ ์์ ์ ์๋ ค์ฃผ๊ณ , ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋๊ธฐ ์ ์ ์๋ฉธ ์ฝ๋ฐฑ์ ์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ๊ฐ๋ฐ์๋ ์ฝ๋ฐฑ ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ๋น์ ์์กด๊ด๊ณ ์ฃผ์ ์ด ๋๋ ์์ ๊ณผ ์๋ฉธ ์ง์ ์์ ์ ์ ์ ์๋ค.
โป์ฐธ๊ณ โป : ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ถ๋ถ๊ณผ ์ด๊ธฐํํ๋ ๋ถ๋ถ์ ๋ช ํํ ๋๋๋ ๊ฒ์ด ์ ์ง๋ณด์ ๊ด์ ์์ ์ข์
โ ์คํ๋ง ๋น์ ์ด๋ฒคํธ ๋ผ์ดํ์ฌ์ดํด
์คํ๋ง ์ปจํ ์ด๋ ์์ฑ → ์คํ๋ง ๋น ์์ฑ → ์์กด๊ด๊ณ ์ฃผ์ → ์ด๊ธฐํ ์ฝ๋ฐฑ → ๋น ์ฌ์ฉ → ์๋ฉธ ์ ์ฝ๋ฐฑ → ์คํ๋ง ์ข ๋ฃ
- ์ด๊ธฐํ ์ฝ๋ฐฑ : ๋น์ด ์์ฑ๋๊ณ , ์์กด๊ด๊ณ ์ฃผ์ ์ด ์๋ฃ๋ ํ ํธ์ถ
- ์๋ฉธ์ ์ฝ๋ฐฑ : ๋น์ด ์๋ฉธ๋๊ธฐ ์ง์ ์ ํธ์ถ
๐ ์คํ๋ง์ ๋น ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ ์ง์
โ ์ธํฐํ์ด์ค 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 |