๐ฑโ๐ค Component
vs Bean
@ Target (ElementType .TYPE )
@ Retention (RetentionPolicy .RUNTIME )
@ Documented
@ Indexed
public @interface Component {
...
}
@Component๋ Class์ ์ฌ์ฉํ ์ ์๋ ์ด๋
ธํ
์ด์
์ด๋ค.
๊ฐ๋ฐ์๊ฐ ์ง์ ํด๋์ค๋ฅผ ์ ์ธํ๊ณ ์ด๋ฅผ Bean์ผ๋ก ๋ฑ๋กํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ค.
๋ฐ๋ผ์, @Component๋ ํด๋น ํด๋์ค๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ ์ดํ ์ ์๊ณ ์ด๋ก๋ถํฐ ์์ฑ๋ ์ธ์คํด์ค๋ฅผ IoC Container์ ๋ด๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ค.
@ Target ({ElementType .METHOD , ElementType .ANNOTATION_TYPE })
@ Retention (RetentionPolicy .RUNTIME )
@ Documented
public @interface Bean {
...
}
@Bean์ Method์ ์ฌ์ฉํ ์ ์๋ ์ด๋
ธํ
์ด์
์ด๋ค.
์ ํํ๋ ํน์ ๊ฐ์ฒด์ ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ ๋ฉ์๋์ ์ฌ์ฉํ๋ค. ์ด ์ธ์คํด์ค๊ฐ Bean์ผ๋ก ๋ฑ๋ก๋๋ค.
๋ฐ๋ผ์, @Bean์ ํด๋น ํด๋์ค๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ ์ดํ ์ ์๋ ๊ฒฝ์ฐ(ex: ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ) ์ด ์ธ์คํด์ค๋ฅผ IoC Container์ ๋ด๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
๊ธฐ์ต๋ณด๋จ ๊ธฐ๋ก์ - @Bean vs @Component