1. Class ๊ฐ์ ์์กด๊ด๊ณ ์ค์
// ์ปจํธ๋กค๋ฌ Class ์์ ํ๋๊ฐ์ผ๋ก ๋ฉค๋ฒ ์๋น์ค์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง
@Controller // ์คํ๋ง ์ปจํ
์ด๋์ ๋ฑ๋ก
public class MemberController {
private final MemberService memberService; // ๋ฉค๋ฒ ์๋น์ค ๊ฐ์ฒด ์ ์ธ
@Autowired // ๋ฐ์ ํด๋์ค๋ฅผ ์์กดํ๋๋ก ์ฃผ์
public MemberController(MemberService memberService)
{
this.memberService = memberService; //๋ฉค๋ฒ ์๋น์ค ๊ฐ์ฒด์ ๋ํ ์ด๊ธฐํ
}
}
//MemberService Class ๊ฐ ์ ์ฅ์ Class๋ฅผ ์์ ์ Field ๊ฐ์ผ๋ก ๊ฐ์ง๋๋ก ์ค์ = ํด๋์ค ๊ฐ์ ์์กด๊ด๊ณ
public class MemberService
{
private final MemberRepository memberRepository; // ํ๋๊ฐ์ผ๋ก ๋ค๋ฅธ ํด๋์ค์ ๊ฐ์ฒด ์ ์ธ
@Autowired
public MemberService(MemberRepository memberRepository)
{
this.memberRepository =memberRepository; // ํด๋น ๊ฐ์ฒด ์ด๊ธฐํ
}
MemberController๋ MemberService์ ๊ฐ์ฒด๋ฅผ ํ๋ ๊ฐ์ผ๋ก ๊ฐ์ง๋ฏ๋ก MemberService ๊ฐ์ฒด์ ์์กดํ๋ค๊ณ ๋ณผ ์ ์๋ค. ์๋น์ค์ ์ ์ฅ์ ๊ด๊ณ์์๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ํ๋๊ฐ์ผ๋ก ๊ฐ์ง๊ฒ ํ๋ ๊ฒ์ ์์กด์ฑ ์ฃผ์ ์ด๋ผ๊ณ ํ๋ค. ์ด๋ค์ ๋ชจ๋ ์์ฑ์๋ฅผ ํตํ์ฌ ์์กด์ฑ์ ์ฃผ์ ํ๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ์์กด๊ด๊ณ๋ฅผ ์ค์ ํ๊ธฐ๋ง ํด์๋ ํด๋น ํด๋์ค๋ค์ด ์คํ๋ง๋ถํธ์ ์ฐ๊ด์ด ๋์ง ์๋๋ค.
์คํ๋ง๋ถํธ๊ฐ ํฐ์บฃ์ผ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ผ๋ฉด ์์ ์ด ๋ง๋ค์ด๋์ ์ปจํ ์ด๋์ ํด๋น ์์ฒญ์ ๋ค๋ฅผ ์ ์๋ ์ปจํธ๋กค๋ฌ๊ฐ ์๋์ง ํ์ธํ๊ฒ ๋๋๋ฐ, ์ด๋ฐ ์ ์ฐจ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ค๋ฉด ์ฌ์ ์ ์ปจํธ๋กค๋ฌ์ ์ฌ๋ฌ Class๋ฅผ ์คํ๋ง๋ถํธ ์ปจํ ์ด๋์ ๋ฑ๋ก ํด์ผํ๋ค.
๊ทธ๋ฌ๋ฉด ์คํ๋ง๋ถํธ๋ ๋ฑ๋ก๋ ํด๋์ค๋ค์ ๊ฐ์ฒด๋ค์ ๊ฐ๊ฐ ๋ฑ ํ๋๋ง ๋ง๋ค๊ณ , ๋ชจ๋ ์์ฒญ์ด ๊ทธ ์์์ ์ด๋ค์ง ์ ์๋๋ก ๊ด๋ฆฌํ๋ค.
2. ์ปดํฌ๋ํธ๋?
ํ๋์ ๋ ๋ฆฝ๋ ๋ชจ๋์ ๋ปํ๋ค.
ํด๋์ค ์์ @Component ์ ๋ ธํ ์ด์ ์ด ์ ํ ์์ผ๋ฉด ํด๋น ํด๋์ค๋ ์คํ๋ง ๋น์ ์๋ ๋ฑ๋ก๋๋ค.
@Controller, @Service, @Repository ๋ชจ๋ @Component์ ์ผ๋ถ์ด๋ค.
@autowired๋ ์คํ๋ง ์ปจํ ์ด๋ ์์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ ์์ ์ ๋ฐ๋ํ๋ฉฐ, ํด๋น ํด๋์ค๊ฐ ํ์๋ก ํ๋ ์์กด์ฑ์ ์ฃผ์ ์ํจ๋ค.