๐ ์ถ์ฒ : https://dev-coco.tistory.com/69
๋จผ์ Bean์ ์ดํดํ๊ธฐ ์ํด ์คํ๋ง ์ปจํ ์ด๋(=IoC ์ปจํ ์ด๋)์ ๋ํด ์ ํ์๊ฐ ์๋ค.
์๋ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ดํ๋ฆฌ์ผ์ด์ ๋์์ ์ ๊ณตํ๋ ๊ฐ์ฒด๋ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ด๋, ๊ฐ์ฒด๋ค์ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋ ๊ฒ๋ณด๋ค ์๋ก ์ํธ์์ฉํ์ฌ ๋์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ด๋ ๊ฒ ์ํธ์์ฉํ๋ ๊ฐ์ฒด๋ฅผ
๊ฐ์ฒด์ ์์กด์ฑ์ด๋ผ๊ณ ํํํ๋ค.
์คํ๋ง์์๋ ์คํ๋ง ์ปจํ
์ด๋์ ๊ฐ์ฒด๋ค์ ์์ฑํ๋ฉด ๊ฐ์ฒด๋ผ๋ฆฌ ์์กด์ฑ์ ์ฃผ์
(DI)ํ๋ ์ญํ ์ ํด์ฃผ๋ฉฐ, ์คํ๋ง ์ปจํ
์ด๋์ ๋ฑ๋กํ ๊ฐ์ฒด๋ค์ ๋น(Bean)์ด๋ผ๊ณ ํ๋ค.
์คํ๋ง ๋ถํธ์์ ์ฌ์ฉ์ ํด๋์ค๋ฅผ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ํด๋์ค ์ ์ธ๋ถ ์์@Component ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
@Controller, @Service, @Repository๋ ๋ชจ๋ @Component๋ฅผ ํฌํจํ๊ณ ์์ผ๋ฉฐ, ํด๋น ์ด๋
ธํ
์ด์
์ผ๋ก ๋ฑ๋ก๋ ํด๋์ค๋ค์ ์คํ๋ง ์ปจํ
์ด๋์ ์ํด ์๋์ผ๋ก ์์ฑ๋์ด ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋ฉ๋๋ค.
์๋์ผ๋ก ์คํ๋ง ๋น์ ๋ฑ๋กํ๋ ค๋ฉด ์๋ฐ ์ค์ ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํด์ผ ํ๋ค. XML๋ก ์คํ๋ง ๋น์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง, ์ต๊ทผ์๋ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ํจ
์ค์ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ @Configuration ์ด๋
ธํ
์ด์
์ ํด๋์ค ์ ์ธ๋ถ ์์ ์ถ๊ฐํ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํน์ ํ์
์ ๋ฆฌํดํ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค๊ณ , @Bean ์ด๋
ธํ
์ด์
์ ๋ถ์ฌ์ฃผ๋ฉด ์๋์ผ๋ก ํด๋น ํ์
์ ๋น ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
MemberRepository๋ ์ธํฐํ์ด์ค์ด๊ณ , MemoryMemberRepository๊ฐ ๊ตฌํ์ฒด์ด๊ธฐ ๋๋ฌธ์ MemoryMemberRepository๋ฅผ new ํด์ค๋ค.
@Configuration์ค์ ๋ ํด๋์ค์ ๋ฉ์๋์์ ์ฌ์ฉ๊ฐ๋ฅ- ๋ฉ์๋์ ๋ฆฌํด ๊ฐ์ฒด๊ฐ ์คํ๋ง ๋น ๊ฐ์ฒด์์ ์ ์ธํจ
- ๋น์ ์ด๋ฆ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ์๋์ ์ด๋ฆ, @Bean(name="name")์ผ๋ก ์ด๋ฆ ๋ณ๊ฒฝ ๊ฐ๋ฅ
@Scope๋ฅผ ํตํด ๊ฐ์ฒด ์์ฑ์ ์กฐ์ ํ ์ ์์@Component์ด๋ ธํ ์ด์ ์ ํตํด@Configuration์์ด๋ ๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ ์๋ ์์- ๋น ๊ฐ์ฒด์ init(), destroy() ๋ฑ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ฅผ ์ถ๊ฐํ ๋ค์ @Bean์์ ์ง์ ํ ์ ์์
- ์ด๋
ธํ
์ด์
ํ๋๋ก ํด๊ฒฐ๋๋ 1๋ฒ ๋ฐฉ๋ฒ์ด ๊ฐ๋จํ๊ณ ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ง๋ง, ์ํฉ์ ๋ฐ๋ผ 2๋ฒ ๋ฐฉ๋ฒ๋ ์ฌ์ฉ๋๋ค๊ณ ํ๋ค.
- 1๋ฒ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ ๊ฐ๋ฐ์ ์งํํ๋ค MemberRepository๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ์ํฉ์ด ์๊ธฐ๋ฉด 1๋ฒ ๋ฐฉ๋ฒ์ ์ผ์ผ์ด ๋ณ๊ฒฝํด์ค์ผ ํ์ง๋ง, 2๋ฒ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ๊ฑด ๊ฑด๋ค์ผ ํ์ ์์ด
@Configuration์ ๋ฑ๋ก๋ @Bean๋ง ์์ ํด์ฃผ๋ฉด ๋๋ฏ๋ก, ์์ ์ด ์ฉ์ด
- 1๋ฒ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ ๊ฐ๋ฐ์ ์งํํ๋ค MemberRepository๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ์ํฉ์ด ์๊ธฐ๋ฉด 1๋ฒ ๋ฐฉ๋ฒ์ ์ผ์ผ์ด ๋ณ๊ฒฝํด์ค์ผ ํ์ง๋ง, 2๋ฒ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ๊ฑด ๊ฑด๋ค์ผ ํ์ ์์ด
์คํ๋ง ๋ถํธ์ ๊ฒฝ์ฐ @Component, @Service, @Controller, @Repository, @Bean, @Configuration ๋ฑ์ผ๋ก ๋น๋ค์ ๋ฑ๋กํ๊ณ ํ์ํ ๊ณณ์์ @Autowired๋ฅผ ํตํด ์์กด์ฑ ์ฃผ์
์ ๋ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์
{% content-ref url="3-field-setter.md" %} 3-field-setter.md {% endcontent-ref %}
 (1) (1) (1) (1) (1) (1).png)
 (1) (1) (1) (1) (1).png)
 (1) (1) (1).png)
 (1) (1) (1).png)