Bean์ด๋ ์ปจํ
์ด๋ ์์ ๋ค์ด์๋ ์๋ฐ ๊ฐ์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค.
์ปจํ
์ด๋์ ๋ด๊ฒจ์์ผ๋ฉฐ, ํ์ํ ๋ ์ปจํ
์ด๋์์ ๊ฐ์ ธ์์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
@Bean
์ ์ฌ์ฉํ๊ฑฐ๋ xml ์ค์ ์ ํตํด ์ผ๋ฐ ๊ฐ์ฒด๋ฅผ Bean์ผ๋ก ๋ฑ๋กํ ์ ์๊ณ , Bean์ผ๋ก ๋ฑ๋ก๋ ๊ฐ์ฒด๋ ์ฝ๊ฒ ์ฃผ์
ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
๐ก Bean ์๋ช
์ฃผ๊ธฐ
์คํ๋ง ์ปจํ
์ด๋์ ์ํด ์๋ช
์ฃผ๊ธฐ๊ฐ ๊ด๋ฆฌ๋๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์งํ๋ฉ๋๋ค.
1๏ธโฃ ๊ฐ์ฒด ์์ฑ: ์คํ๋ง ์ปจํ
์ด๋ ์ด๊ธฐํ ์ ๋น ๊ฐ์ฒด ์์ฑ
2๏ธโฃ ์์กด ์ค์ : ์์กด ๊ฐ์ฒด ์ฃผ์
3๏ธโฃ ์ด๊ธฐํ
4๏ธโฃ ์ฌ์ฉ
5๏ธโฃ ์๋ฉธ: ์คํ๋ง ์ปจํ
์ด๋ ์ข
๋ฃ ์ ๋น ๊ฐ์ฒด ์๋ฉธ
1๏ธโฃ ์ฌ์ฉ ๋ฐฉ๋ฒ์ด ๊ฐ๊ฒฐํ๋ฉฐ ์ฝ๋์์ ์ด๊ธฐํ ๋ฉ์๋๊ฐ ์กด์ฌํจ์ ์ฝ๊ฒ ํ์
๊ฐ๋ฅํ์ฌ xml ์ค์ ๋ฐฉ๋ฒ๋ณด๋ค ์ง๊ด์ ์
๋๋ค. (๊ถ์ฅ)
์ด๊ธฐํ: ๋น ์ด๊ธฐํ ๋ฉ์๋์ @PostConstruct
์ฌ์ฉํ์ฌ xml์ <context:annotation-config></context:annotation-config>
์ถ๊ฐ
์๋ฉธ: ๋น ์๋ฉธ ๋ฉ์๋์ @PreDestroy
์ฌ์ฉํ์ฌ xml์ <context:annotation-config></context:annotation-config>
์ถ๊ฐ
2๏ธโฃ ๊ฐ๊ฒฐํ์ง ์๊ณ ๋น ์ฝ๋์ ์คํ๋ง ์ธํฐํ์ด์ค๊ฐ ๋
ธ์ถ๋์ด ๊ถ์ฅํ์ง ์๋ ๋ฐฉ๋ฒ์
๋๋ค. (์ง์)
์ด๊ธฐํ: InitializingBean
์ธํฐํ์ด์ค์ afterPropertiesSet()
๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋
์๋ฉธ: DisposableBean ์ธํฐํ์ด์ค์ destroy() ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋
3๏ธโฃ ๋น ์ฝ๋์ ์คํ๋ง ์ธํฐํ์ด์ค๋ ๋
ธ์ถ๋์ง ์์ง๋ง, ์ฝ๋๋ง์ผ๋ก ์ด๊ธฐํ ๋ฉ์๋ ํธ์ถ ์ฌ๋ถ๋ฅผ ์ ์ ์๋ ๋ฐฉ๋ฒ์
๋๋ค.
์ด๊ธฐํ: ์ปค์คํ
init() ๋ฉ์๋ ์ ์
xml์ init-method ์์ฑ์ผ๋ก ๋ฉ์๋ ์ด๋ฆ์ ์ง์ ํ๊ฑฐ๋, ๋น ์ด๊ธฐํ ๋ฉ์๋์ @Bean(init-method="init")
๋ฅผ ์ง์ ํฉ๋๋ค.
์๋ฉธ : ์ปค์คํ
destroy() ๋ฉ์๋ ์ ์
xml์ destroy-method
์์ฑ์ผ๋ก ๋ฉ์๋ ์ด๋ฆ ์ง์
- singleton(default): Spring IoC ์ปจํ ์ด๋ ๋น ํ ๊ฐ์ ์ธ์คํด์ค๋ง ์์ฑํ๋ ๊ฒ์ผ๋ก, ์ปจํ ์ด๋๊ฐ Bean์ ์ฃผ์ ํ ๋ ํญ์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ ์ฑ๋ฅ ์ต์ ํ์ ์ ๋ฆฌํฉ๋๋ค.
- prototype: ์ปจํ ์ด๋๊ฐ Bean์ ์ฃผ์ ํ ๋ ํญ์ ๋ค๋ฅธ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์์ฒญ์์ ์๋ก์ด ๊ฐ์ฒด๊ฐ ์์ฑ๋ฉ๋๋ค. ์์ฐ๋ ๊ฐ์ฒด๋ GC์ ์ํด Bean์ด ์ ๊ฑฐ๋ฉ๋๋ค.
- request: ํ๋์ HTTP Request ์๋ช ์ฃผ๊ธฐ ์์ ๋จ ํ๋์ Bean์ด ์กด์ฌํ๋ ๊ฒ์ผ๋ก, ๊ฐ ์์ฒญ์ ๊ณ ์ Bean ๊ฐ์ฒด๋ฅผ ๋ณด์ ํฉ๋๋ค. Spring MVC Web Application์์ ์ฌ์ฉ๋ฉ๋๋ค.
- session: ํ๋์ HTTP Session ์์ ๋จ ํ๋์ Bean์ด ์กด์ฌํ๋ ๊ฒ์ผ๋ก, Spring MVC Web Application์์ ์ฌ์ฉ๋ฉ๋๋ค.
- global session: ํ๋์ Global HTTP Session ์๋ช ์ฃผ๊ธฐ ์์ ํ๋์ Bean์ ์ง์ ํ๋ ๊ฒ์ผ๋ก, Spring MVC Web Application์์ ์ฌ์ฉ๋ฉ๋๋ค.
- application: ํ๋์ ServletContext ์๋ช ์ฃผ๊ธฐ ์์ ํ๋์ Bean์ด ์กด์ฌํ๋ ๊ฒ์ผ๋ก, Spring MVC Web Application์์ ์ฌ์ฉ๋ฉ๋๋ค.
โ
@Bean ๊ณผ @Component์ ์ฐจ์ด
๐ก @Bean
๋ฉ์๋ ๋ ๋ฒจ์์ ์ ์ธ๋๋ฉฐ, ๋ฐํ๋๋ ๊ฐ์ฒด(์ธ์คํด์ค)๋ฅผ ๊ฐ๋ฐ์๊ฐ ์๋์ผ๋ก ๋ฑ๋กํฉ๋๋ค.
๐ก @Component
ํด๋์ค ๋ ๋ฒจ์์ ์ ์ธ๋๋ฉฐ, ์คํ๋ง์ด ๋ฐํ์ ์์ ์ปดํฌ๋ํธ ์ค์บ์ ํ์ฌ ์๋์ผ๋ก ๋น์ ๋ฑ๋กํฉ๋๋ค.