@Component์ @Comfiguration์ ์ฐจ์ด์ ๊ดํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. ๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด @Component๋ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ํด๋์ค๋ฅผ Bean์ผ๋ก ๋ฑ๋กํ ๋ ์ฌ์ฉํ๊ณ @Configuration + @Bean์ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ ์ดํ๊ธฐ ํ๋ ํด๋์ค๋ฅผ ๋น์ผ๋ก ๋ฑ๋กํ ๋ ์ฌ์ฉํฉ๋๋ค. **์ฐธ์กฐ
์ข ๋ฅ | ์ ์ธ | ์ฌ์ฉ ์ฉ๋ |
@Component | ํด๋์ค | ์ฌ์ฉ์๊ฐ ๋ง๋ ํด๋์ค |
@Bean | ๋ฉ์๋ | ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
1. @Component / @Configuration
@Component๊ฐ ๋ฌ๋ฆฐ ํด๋์ค๋ ์๋์ผ๋ก ์คํ๋ง ์ปดํฌ๋ํธ ์ค์บ ๋์์ด ๋๊ธฐ ๋๋ฌธ์ ๋ณ๋๋ก Bean์ ๋ฑ๋กํ์ง ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์คํ ๋ ์ค ํ์ ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ ํด๋์ค์ ๋ฌ๋ ค ์๋๋ฐ์, ์คํ ๋ ์ค ํ์ ์ด๋ ์ฐ๋ฆฌ๊ฐ ํํ ์ฌ์ฉํ๋ @Controller, @Service, @Repository ๋ฑ์ ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์คํ๋ง ๊ด๋ฆฌ ์ปดํฌ๋ํธ๋ก ์๋ณํ๊ฒ ํด์ฃผ๋ ๋จ์ํ ๋ง์ปค๋ผ๊ณ ๋ณด๋ฉด๋ฉ๋๋ค.
์ด์ ๋ฒ์ ์์๋ XML ํ์ผ์ Bean์ ๋ชจ๋ ๋ช ์ํ๊ณ ๊ด๋ฆฌํ์ง๋ง ์ด๋๋ฌธ์ XML ํ์ผ์ด ๊ฑฐ๋ํด์ก์ต๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํน์ ๋ฒ์ ๋ถํฐ ์ด๋ ธํ ์ด์ ์ด ๋ฑ์ฅํ๊ณ ์ด๋ฅผ ํตํด ๊ฐ๋ตํ๊ฒ ๋น์ ๋ฑ๋ก/์์ฑํ ์ ์๊ฒ ๋์์ต๋๋ค.
- Spring 2.0 : @Repository
- Spring 2.5 : @Component, @Controller, @Service, @Configuration
์ด๋ ์๋์ ๊ฐ์ด ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋ ํด๋์ค๋ฅผ ๋น์ผ๋ก ๋ฑ๋กํ๊ณ ์ถ์๋ ์ฌ์ฉํฉ๋๋ค.
@Configuration ํด๋์ค์๋ ํด๋์ค ๋ด๋ถ์ ํ๋ ์ด์์ @Bean ๋ฉ์๋๋ฅผ ์ ์ธํด ์ฌ์ฉํฉ๋๋ค. ์ฌ์ค @Configuration ๋ด๋ถ์๋ @Component ์ด๋ ธํ ์ด์ ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋์ ์๋ฆฌ๋ ๊ฐ์ต๋๋ค. **๋ฟ๋ง ์๋๋ผ @Component + @Bean์ ์กฐํฉ๋ ์ฌ์ฉ๊ฐ๋ฅํฉ๋๋ค.
๋ํ ๊ตฌํ ๋๋ฆ์ด๊ฒ ์ง๋ง ํด๋น ํด๋์ค๋ฅผ ๊ฐ๋ฐ์๊ฐ ๋ง๋ค์๊ณ ์ ์ด๊ฐ ๊ฐ๋ฅํ์ง๋ง, ๋น์ผ๋ก ๋ฑ๋กํ๋ฉด์ ๋ด๋ถ์ ๊ฐ์ ์ ์ฅํ ๋๋ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๋น์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. **Component๋ก ๋ง๋ค๊ณ ์์ฑ์ ๋ธ๋ก์์ ์ด๋ฅผ ์ด๊ธฐํํด์ฃผ๋ ๊ฒ๋ ์๊ด์์ต๋๋ค. ์ด๋ ๊ตฌํ ๋๋ฆ์ ๋๋ค.
2. ์ฐจ์ด์
@Configuration ๋ด๋ถ์๋ @Component ์ด๋ ธํ ์ด์ ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ @Bean๊ณผ @Component๋ฅผ ๋น๊ตํด๋ด์ผํฉ๋๋ค. @Component๋ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ํด๋์ค์ ์ ์ธ๋์ด ๋น์ผ๋ก ๋ฑ๋ก ํ ์ ์๋ค๊ณ ํ๋๋ฐ์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํน์ ๋ด์ฅ ํด๋์ค๋ฑ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ ์ด๊ฐ ๋ถ๊ฐ๋ฅํ ํด๋์ค๋ค๋ ์กด์ฌํฉ๋๋ค. ์ด๋ฐ ํด๋์ค๋ฅผ ๋น์ผ๋ก ๋ฑ๋กํด์ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌํด์ฃผ๊ณ ์ถ์ ๋ @Bean์ ์ฌ์ฉํ์ฌ ๋ฑ๋กํด์ค์ ์์ต๋๋ค.
3. Conclusion
์ฆ, @Component๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋ ํด๋์ค๋ฅผ ๋น์ผ๋ก ๋ฑ๋กํด์ฃผ๊ณ ์ถ์๋ ์ฌ์ฉํ๋ฉฐ, @Configuration + @Bean์ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ ์ดํ ์ ์๋ ํด๋์ค๋ฅผ ๋น์ผ๋ก ๋ฑ๋กํ ๋ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
'๐ฅDEV > Java || Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋์ ๋ ํฌ์งํ ๋ฆฌ๋ก ํ์ ์ํฐํฐ ๊ด๋ฆฌํ๊ธฐ (0) | 2022.07.31 |
---|---|
๊ฐ์ ๊ฒ์ฆํ๋ ์์น๋ ์ด๋๊ฐ ์ข์๊น? (0) | 2022.07.30 |
FrontController ํจํด (0) | 2022.07.21 |
@Embedded์ ๊ฐ ๊ฐ์ฒด (0) | 2022.07.17 |
private ์์ฑ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๊ธฐ (0) | 2022.07.17 |
๋๊ธ