728x90
1. ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์๋ ์์กด๊ด๊ณ ์ค์
ํ์ ์ปจํธ๋กค๋ฌ๊ฐ ์๋น์ค์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉ๊ฐ๋ฅํ๋๋ก ํ๊ธฐ → ์์กด๊ด๊ณ ์์ฑ
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
@Controller
public class MemberController {
}
- @Controller ๋ก annotation์ ํ๊ฒ๋๋ฉด ์คํ๋ง ๋น์์ ์๋ฅผ ๊ด๋ฆฌํ๊ฒ ํ ์ ์์.
private final MemberService memberService;
- ์คํ๋ง ์ปจํ ์ด๋์ ๋ฑ๋กํด์ ํ๋๋ฅผ ์ฌ๋ฌ ๊ฐ๊ฐ ๊ณต์
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
- Auto Wired ⇒ ์คํ๋ง ์ปจํ ์ด๋์์ Member service์ ์ฐ๊ฒฐ์ ์์ผ์ค
- ์ฌ๊ธฐ์์ MemberService๋ ์คํ๋ง๊ณผ ์ฐ๊ฒฐ๋์ง ์์ ์์ ์๋ฐ ํด๋์ค์ด๋ฏ๋ก ์คํ๋ง ์ชฝ์์ MemberService๋ฅผ ์์๋ณผ ๋ฐฉ๋ฒ์ด ์์
- @Service ๋ฅผ ๋ถ์ฌ์ ์คํ๋ง ์ปจํ ์ด๋์ ๋ฑ๋กํด์ค
- @Repository ๋ ๋ง์ฐฌ๊ฐ์ง
- ์ด๋ ๊ฒ Spring์์ ์ MemberService์ ๋ํ ์์กด์ฑ(MemberService)์ ์ฃผ์ ! ํด์ค
⇒ @Service, @Repository, @Controller ๋ชจ๋ @Component ์ ๊ฐ์ ๊ฒ
- annotation์ ๋ถ์ฌ์ฃผ๋ฉด Spring์ ๋น์ผ๋ก ๋ฑ๋ก ํ๋ ๊ฒ์ด๊ณ ,
- @AutoWired ๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋ฑ๋ก๋ ๊ฐ์ฒด๋ค์ ์ฐ๊ฒฐ ํด์ค๋ค.
Q. ์๋ฌด๋ฐ๋ @Component ํด๋ ๋๋์?
A. ์ ๋ฉ๋๋ค.
- package ํ์์๋ค๊ฐ ๋ค์ด๊ฐ ๋ ์๋ค๋ง ๋ค์ ธ์ ๋ฐ์์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก๋ ์๋ฉ๋๋ค.
- ์คํ๋ง์ ์คํ๋ง ์ปจํ ์ด๋์ ๋น์ ๋ฑ๋กํ ๋ ์ฑ๊ธํค(ํ๋๋ง ๋ฑ๋กํด์ ๊ณต์ )์ผ๋ก ๋ฑ๋กํ๋ค. ๊ฐ์ ์คํ๋ง ๋น์ด๋ฉด ๋ชจ๋ ๊ฐ์ ์ธ์คํด์ค
2. ์๋ฐ ์ฝ๋๋ก ์ง์ ์คํ๋ง ๋น ๋ฑ๋กํ๊ธฐ
Configuration Class๋ฅผ ์ง์ ๋ง๋ค์ด์ ์์ฑํ๋ ๋ฐฉ๋ฒ
package hello.hellospring;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import hello.hellospring.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();
}
}
์์กด์ฑ ์ฃผ์ ์ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ
1. ์์ฑ์ ์ฃผ์ → ์ถ์ฒ
public MemberService(MemberRepository memberRepository){
this.memberRepository = memberRepository;
}
2. ํ๋ ์ฃผ์ (๋ณ๋ก ์ ์ข์)
@Autowired private MemberService memberService;
3. setter ์ฃผ์
@Autowired public void setMemberService(MemberService memberService) {
this.memberService = memberService;
}
- ๋จ์ : ๋๊ฐ ๋ฉค๋ฒ ํธ์ถํ์ ๋ public ์ผ๋ก ๋์ด์์ผ๋๊น ์ค๊ฐ์ ์๋ชป ์์กด์ฑ์ ์ฃผ์ ํ ์๋ ์์. ์๋ฌด๋ ์ฌ๋ฌ๋ฒ ํธ์ถํ ์ ์๋๋ก ํ๋ ๊ฒ์ ์ข์ง ์๋ค.
- ์ค๋ฌด์์๋ ์ฃผ๋ก ์ ํํ๋ ์ปจํธ๋กค๋ฌ, ์๋น์ค, ๋ฆฌํฌ์งํ ๋ฆฌ ๊ฐ์ ์ฝ๋๋ ์ปดํฌ๋ํธ ์ค์บ์ ์ฌ์ฉ
- ์ผ๋ฐ์ ์ธ ๊ฒ๋ค
- ์ ํํ๋์ง ์๊ฑฐ๋ ์ํฉ์ ๋ฐ๋ผ ๊ตฌํ ํด๋์ค๊ฐ ๋ณ๊ฒฝ๋์ด์ผํ๋ ๊ฒฝ์ฐ์๋ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก
- ์ฐ๋ฆฌ๋ ์ง๊ธ interface ๊ธฐ๋ฐ์ผ๋ก DB๋ฅผ ๊ฒฐ์ ํ์ง ์๊ณ ํ๊ณ ์์ผ๋๊น ์๋ฐ ๊ฒฝ์ฐ๊ฐ ๋๊ฒ ๋ค.
- ์ค์ ํ์ผ๋ง ๋ฐ๊พธ๋ฉด ๋๋๊น!
728x90
'๐ฅ Web > โ Back-end | Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring ์ ๋ฌธ] 5. ํ์ ๊ด๋ฆฌ ์์ - ์น MVC ๊ฐ๋ฐ (0) | 2023.09.25 |
---|---|
[Spring ์ ๋ฌธ] 3. ํ์ ๊ด๋ฆฌ ์์ - ๋ฐฑ์๋ ๊ฐ๋ฐ (0) | 2023.09.25 |
[Spring ์ ๋ฌธ] 2. ์คํ๋ง ์น ๊ฐ๋ฐ ๊ธฐ์ด (0) | 2023.06.30 |
[Spring ์ ๋ฌธ] 1. ํ๋ก์ ํธ ํ๊ฒฝ ์ค์ (0) | 2023.06.29 |