
์คํ๋ง์ ํ์ตํ ๋ ํต์ฌ ๊ฐ๋
์ค ํ๋๋ Bean์ด๋ค.
Bean ๊ฐ๋
์ ๋ชจ๋ฅด๋ฉด ์คํ๋ง ํ๋ก์ ํธ๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํดํ ์ ์์ ๊ฒ์ด๋ค.
๋ด๊ฐ ๊ณต๋ถํ๊ณ ์ดํดํ ๋ฐฉ์๋๋ก ์ ๋ฆฌ๋ฅผ ํด๋ณด๋ ค ํ๋ค.
์ฐ์ Bean์ด๋ ๊ฐ์ฒด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
Java์ ๊ฒฝ์ฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋,
public class A {
b = new B();
}
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก new ํค์๋๋ฅผ ์ฌ์ฉํด ์์ฑํ๋ค.
ํ์ง๋ง ์คํ๋ง์์๋
public class A {
private B b;
}
ํด๋น ๊ฐ์ฒด๋ฅผ ์ ์ธํด์ฃผ๋ ๋ฐฉ์์ด๋ค.
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ ์ด์ ๋ ์คํ๋ง ์ปจํ ์ด๋๊ฐ ๊ฐ์ฒด๋ฅผ ๋ณ๋๋ก ๊ด๋ฆฌํ๊ณ ์์ฑํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
์ฆ, ๊ฐ์ฒด๋ฅผ ์ง์ ๋ง๋๋ ๊ฒ์ด ์๋๋ผ A๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ์คํ๋ง ์ปจํ
์ด๋๊ฐ ๊ฐ์ฒด A๋ฅผ ์์ฑํ์ฌ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์์ด๋ค.
๊ทธ๋ผ ์คํ๋ง ์ปจํ
์ด๋๋ ๊ฐ์ฒด๋ฅผ ์ด๋ป๊ฒ ์ธ์ํ ๊น ?
-> ์ฌ์ฉ์๊ฐ ์์ฑํ ์ด๋
ธํ
์ด์
์ ํตํด ๋น์ ๋ฑ๋กํ๋ค.
์ฝ๋๋ฅผ ํตํด ๋น ๋ฑ๋ก ๊ณผ์ ์ ์์๋ณด์๋ค.
@SpringBootApplication ์ด๋ผ๋ ์ด๋
ธํ
์ด์
์ ํด๋น ํด๋์ค๋ฅผ ๋ฉ์ธ ํด๋์ค๋ก ์ธ์ํ๊ณ , ์คํ๋ง ๋ถํธ ์ฌ์ฉ์ ํ์ํ ๊ธฐ๋ณธ ์ค์ ์ ํด์ค๋ค.

@SpringBootConfiguration : ์คํ๋ง ๋ถํธ ๊ด๋ จ ์ค์ ์ ๋ํ๋ธ๋ค. @Configuration์ ์์ํด์ ๋ง๋ ์ด๋
ธํ
์ด์
์ด๋ค.
@ComponentScan : ์ฌ์ฉ์๊ฐ ๋ฑ๋กํ ๋น์ ์ฝ๊ณ ๋ฑ๋กํ๋ค. ๋ํ @Component๋ผ๋ ์ด๋
ธํ
์ด์
์ ๊ฐ์ง ํด๋์ค๋ฅผ ์ฐพ์ ๋น์ผ๋ก ๋ฑ๋กํ๋ ์ญํ ์ ํ๋ค.
@EnableAutoConfiguration : ์๋ ๊ตฌ์ฑ์ ํ์ฑํํ๋ค. ์คํ๋ง ๋ถํธ ์๋ฒ๊ฐ ์คํ๋ ๋, ๋ฉํ ํ์ผ์ ์ฝ๊ณ ์ ์๋ ์ค์ ๋ค์ ์๋์ผ๋ก ๊ตฌ์ฑํ๋ ์ญํ ์ ํ๋ค.
ํ์ง๋ง ๋ชจ๋ ๋น์ @Component ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ง ์๋๋ค. ๊ฐ๋ฐ์ ํ๋ฉด ์ฉ๋์ ๋ฐ๋ผ ์ญํ ์ ๊ตฌ๋ถํ๊ธฐ ์ํด ๋ค๋ฅธ ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
@Configuration -> ์ค์ ํ์ผ ๋ฑ๋ก@Repository -> ORM ๋งคํ@Controller, @RestController -> ๋ผ์ฐํฐ@Service -> ๋น์ฆ๋์ค ๋ก์ง์์ฃผ ์ฌ์ฉํ๋ ์ด๋ ธํ ์ด์ ๋ค์ด๋ค.
์์, @ComponentScan ์ด @Component ์ด๋
ธํ
์ด์
์ ๊ฐ์ง ํด๋์ค๋ค์ ์ฐพ์ ๋น์ผ๋ก ๋ฑ๋กํ๋ค๊ณ ํ์๋ค.
ํ์ง๋ง ๋ค๋ฅธ ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ ๋๋ ์ด๋ป๊ฒ ํด๋น ํด๋์ค๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒ์ผ๊น?
์ด๋ ธํ ์ด์ ์ ๊ตฌ์ฑ์ ์ดํด๋ณด์๋ค.
@RestController๋ @Controller์ @ResponseBody ์ด 2๊ฐ์ ์ด๋
ธํ
์ด์
์ ํฉ์น ๊ฒ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ @Component๋ ์ฐพ์๋ณผ ์ ์๋ค.

@Controller ์ด๋
ธํ
์ด์
์ ๊ตฌ์ฑ์ ๋ณด๋ ๋น๋ก์ @Component ์ด๋
ธํ
์ด์
์ ์ฐพ์ ์ ์์๋ค.
์ฆ, ๋ค๋ฅธ ์ด๋
ธํ
์ด์
๋ค์ด @Component ์ด๋
ธํ
์ด์
์ ๊ฐ์ธ๊ณ ์๋ ๊ตฌ์กฐ์ด๋ค. ๋ฐ๋ผ์ ์์์ ์๊ฐํ 4๊ฐ์ ์ด๋
ธํ
์ด์
๋ค๋ @Component ์ด๋
ธํ
์ด์
์ ํฌํจํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋น์ผ๋ก ๋ฑ๋ก๋ ์ ์๋ ๊ฒ์ด๋ค.