์คํ๋ง ๋น๊ณผ ์์กด๊ด๊ณ
2. ์๋ฐ ์ฝ๋๋ก ์ง์ ์คํ๋ง ๋น ๋ฑ๋กํ๊ธฐ
1) ๊ตฌํ
- ์ค์ ํ์ผ์ ํตํด ์คํ๋งํํ ์ง์ ๋ฑ๋กํ๋ ๋ฐฉ์์ด๋ค.
- @Service, @Repository, @Autowired ์ ๋ ธํ ์ด์ ์ ์ ๊ฑฐํ๊ณ ์งํํ๋ค.
- ํฅํ ๋ฉ๋ชจ๋ฆฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ค๋ฅธ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ๋ณ๊ฒฝํ ์์ ์ด๋ฏ๋ก, ์ปดํฌ๋ํธ ์ค์บ ๋ฐฉ์ ๋์ ์ง์ ์ค์ ํ ๊ฒ์ด๋ค.
package hello.hello.spring;
import hello.hello.spring.repository.MemberRepository;
import hello.hello.spring.repository.MemoryMemberRepository;
import hello.hello.spring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService(){
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository(){
return new MemoryMemberRepository();
}
}
2) ํน์ง
- XML๋ก ์ค์ ํ๋ ๋ฐฉ์๋ ์์ง๋ง ์ต๊ทผ์๋ ์ ์ฌ์ฉํ์ง ์๊ณ ์๋ค.
- DI์๋ ํ๋ ์ฃผ์ , setter ์ฃผ์ , ์์ฑ์ ์ฃผ์ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. ์์กด๊ด๊ณ๊ฐ ์คํ(๋ฐํ์) ์ค์ ๋์ ์ผ๋ก ๋ณํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ผ๋ฏ๋ก ์์ฑ์ ์ฃผ์ ์ ๊ถ์ฅํ๋ค.
- ์ค๋ฌด์์๋ ์ฃผ๋ก ์ ํํ๋ ์ปจํธ๋กค๋ฌ, ์๋น์ค, ๋ฆฌํฌ์งํ ๋ฆฌ ๊ฐ์ ์ฝ๋๋ ์ปดํฌ๋ํธ ์ค์บ์ ์ฌ์ฉํ๋ค.
- ์ ํํ๋์ง ์๊ฑฐ๋ ์ํฉ์ ๋ฐ๋ผ ๊ตฌํ ํด๋์ค๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ฉด, ์ค์ ์ ํตํด ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค. (๋ณ๊ฒฝ ์ ๋จ์ํ Config์ ๋ฑ๋ก๋ ํด๋์ค ์ด๋ฆ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ค.)
- @Autowired๋ฅผ ํตํ DI๋ helloController , memberService ๋ฑ๊ณผ ๊ฐ์ด ์คํ๋ง์ด ๊ด๋ฆฌํ๋ ๊ฐ์ฒด์์๋ง ๋์ํ๋ค. ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ์ง ์๊ณ ๋ด๊ฐ ์ง์ ์์ฑํ ๊ฐ์ฒด์์๋ ๋์ํ์ง ์๋๋ค