[Spring] 4.์คํ๋ง ๋น๊ณผ ์์กด๊ด๊ณ
1. ์คํ๋ง ๋น์ ๋ฑ๋กํ๊ณ ์์กด๊ด๊ณ ์ค์ ํ๊ธฐ
- ํ์ ์ปจํธ๋กค๋ฌ๊ฐ ํ์์๋น์ค์ ํ์ ๋ ํฌ์งํ ๋ฆฌ ์ฌ์ฉํ ์ ์๊ฒ ์์กด๊ด๊ณ ์ค์ = ์ปจํธ๋กค๋ฌ๊ฐ ๋ฉค๋ฒ ์๋น์ค๋ฅผ ์์กดํ๊ฒ๋ ๋ง๋ค๊ธฐ
* ํ์ ์ปจํธ๋กค๋ฌ์ ์์กด๊ด๊ณ ์ถ๊ฐ
ใด controller - MemberController
@Controller
public class MemberController {
// member service๋ ํ๋๋ง ์์ฑํด์ ๊ณต์ฉ์ผ๋ก ์์ฑํ๋ฉด ๋ผ์ ์๋์ฒ๋ผ ๋ง๋คํ์๊ฐ ์๋ค.
// private final MemberService memberService = new MemberService();
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
@Controller ์ด๋ ธํ ์ด์
-> ์คํ๋ง ์์ํ ๋ ์ปจํ ์ด๋๊ฐ ์๊ธฐ๋๋ฐ ์ด๋ ธํ ์ด์ ์ด ์์ผ๋ฉด ํด๋น ์ปจํธ๋กค๋ฌ ๊ฐ์ฒด ์์ฑํด์ ์ปจํ ์ด๋์ ๋ฃ๊ณ ๊ด๋ฆฌํด์ค
@Autowired ์ด๋ ธํ ์ด์
-> ์ปจํ ์ด๋๊ฐ ๋ฐ ๋ memberController ์์ฑํ๋๋ฐ, ์์ฑ์ ํธ์ถํ๋๋ฐ, ์์ฑ์์ autowired ์์ผ๋ฉด ์คํ๋ง ์ปจํ ์ด๋์ ์๋ memberservice๋ฅผ ๊ฐ์ ธ์ ์ฐ๊ฒฐ์์ผ์ค (์ค๋ณต์ผ๋ก ์์ฑํ ํ์๊ฐ ์๋ ์ด์ )
-> memberService์ @serviceํด์ค์ผ controller์ชฝ์์ ์ค๋ฅ์๋ธ
* ํ์ ์๋น์ค ์์
ใด service - MemberController
@Service
public class MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
}
@Service ์ด๋ ธํ ์ด์
-> ์คํ๋ง ์ปจํ ์ด๋์ memberservice ๋ฑ๋กํด์ค
@Autowired ์ด๋ ธํ ์ด์
-> ๋ง์ฐฌ๊ฐ์ง๋ก ์ปจํ ์ด๋์์ ๋ ํฌ ๊ฐ์ ธ์์ ์๋น์ค๋ ์ฐ๊ฒฐ์์ผ์ค
* ํ์ ๋ ํฌ์งํ ๋ฆฌ ์์
ใด repository - MemoryMemberRepository
@Repository
public class MemoryMemberRepository implements MemberRepository {
private static Map<Long, Member> store = new HahsMap<>();
private static long sequence = 0L;
@Override
public Member save(Member member) {
member.setId(++sequence);
store.put(member.getId(), member);
return member;
}
}
@Repository ์ด๋ ธํ ์ด์
-> ๋ง์ฐฌ๊ฐ์ง๋ก ์คํ๋ง ์ปจํ ์ด๋์ ๋ฑ๋กํด์ค
-----์ด๋ ๊ฒ ํด๋์ผ๋ฉด ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์ปจํธ๋กค๋ฌ / ์๋น์ค / ๋ ํฌ ๋ฅผ ์น ๊ฐ์ ธ์์ค ------
1) Controller
- ์ปจํธ๋กค๋ฌ์ ์๋น์ค๋ฅผ ์ฐ๊ฒฐ์์ผ์ค์ผํจ (์์ฑ์์ autowired ์ฌ์ฉ)
์ปจํธ๋กค๋ฌ ์์ฑ๋ ๋ ์คํ๋ง ๋น์ ๋ฑ๋ก๋์ด์๋ ๋ฉค๋ฒ์๋น์ค ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ๋ค ๋ฃ์ด์ค
2) Service
- ๋ง์ฐฌ๊ฐ์ง๋ก ์๋น์ค์ ๋ ํฌ ์ฐ๊ฒฐ์์ผ์ค์ผํจ (์์ฑ์์ autowired ์ฌ์ฉ)
๋์ผํ ๋ฐฉ์์ผ๋ก ์๋
** ์คํ๋ง ๋น์ ๋ฑ๋กํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ
1) ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์๋ ์์กด๊ด๊ณ ์ค์
- @Controller / @Service / @Repository ๋ง๊ณ ์๋ @Component ์
- @Component ์ด๋ ธํ ์ด์ ์ด ์์ผ๋ฉด ์๋์ผ๋ก ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋จ (์ปดํฌ๋ํธ ์ค์บ)
> ์ค์บ์ HellopspringApplication์ด ํฌํจ๋ ํจํค์ง ํ์๋ฅผ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก
> ์คํ๋ง์ ์ปจํ ์ด๋์ ๋น ๋ฑ๋กํ ๋ [์ฑ๊ธํค]์ผ๋ก ๋ฑ๋ก (์ปจํ ์ด๋ / ์๋น์ค / ๋ ํฌ) = ํ๋๋ง ๋ฑ๋กํด์ ๊ณต์
orderService์์ memberRepo ๋๊ฐ์๊ฑฐ ๋ฌ๋ผ๊ณ ํ ์์์
= ๊ฐ์ ์คํ๋ง ๋น์ด๋ฉด ๋ชจ๋ ๊ฐ์ ์ธ์คํด์ค
2) ์๋ฐ ์ฝ๋๋ก ์ง์ ์คํ๋ง ๋น ๋ฑ๋กํ๊ธฐ
๋ฐ์ SpringConfig.class ์์ฑ (application์ด๋ ๋์ผํ ๋ ๋ฒจ)
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
>์ฅ๋จ์ ์กด์ฌ
1) xml ํ ๋ ์๋ฐ์ฝ๋๋ก ์ง์ ์ฌ์ฉ
2) DI์๋ [ํ๋ ์ฃผ์ ], [setter ์ฃผ์ ], [์์ฑ์ ์ฃผ์ ] ์ด๋ ๊ฒ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
a) [์์ฑ์ ์ฃผ์ ] ์์ฑ์ ํตํด์ ์๋น์ค๊ฐ ์ปจํธ๋กค๋ฌ๊ฐ ์ฃผ์ ๋จ
b) [ํ๋ ์ฃผ์ ]์์ฑ์ ๋นผ๊ณ ํ๋์ @Autowired private MemberService memberService; -> ์ด๋ ๊ฒ ์ฃผ์ ํ ์๋์์ (๊ถ์ฅX, ์์ ๋ถ๊ฐ)
c) [setter ์ฃผ์ ] setMemberServiceํจ์๋ก ์ฃผ์ -> ๋๊ตฐ๊ฐ memberContorller๋ฅผ ํธ์ถํ์๋ publicํ๊ฒ ๋ ธ์ถ์ด ๋จ (์๋ชป๋ฐ๊พธ๋ฉด ๋ฌธ์ ๊ฐ ๋จ) // ํ๋ฒ ์ธํ ํ๋ฉด ๋ฐ๊ฟ์ผ์ด ์๊ธดํจ
> ์์ฆ ๊ถ์ฅํ๋ ์คํ์ผ -> ์์ฑ์ ์ฃผ์ (์ปจํ ์ด๋ ์ฌ๋ผ๊ฐ๋ ์์ ์ ์์ฑ๋๊ณ ๋๋จ)
> ์คํ์ค์(๋ฐํ์) ๋ฐ๋์ง ์์ -> ๋ฐ๋๋๋ ์ฝ๋ ์์ ํ ๋ค์ ์คํ
> ์ค๋ฌด์์๋ (์ปจํธ๋กค๋ฌ/์๋น์ค/๋ ํฌ)๋ ์ปดํฌ๋ํธ ์ค์บ ์ฌ์ฉ (์ ํํ๋)
์ ํํ๋์ง ์๊ฑฐ๋ ์ํฉ์ ๋ฐ๋ผ ๊ตฌํ ํด๋์ค ๋ณ๊ฒฝํด์ผํ๋ฉด ์ค์ ์ ํตํด ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ ๊ฒ์ด ์ข๋ค.
> ์ฃผ์) @Autowired๋ฅผ ํตํ DI๋ ์ปจํธ๋กค๋ฌ/์๋น์ค ๋ฑ ์คํ๋ง์ด ๊ด๋ฆฌํ๋ ๊ฐ์ฒด์์๋ง ๋์! (๋ด๊ฐ ์ง์ ์์ฑํ ๊ฐ์ฒด์์๋ ๋์X)
'๐จโ๐ป Web Development > Spring - Intro' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] 6.์คํ๋ง DB ์ ๊ทผ ๊ธฐ์ (0) | 2023.02.14 |
---|---|
[Spring] 5.ํ์ ๊ด๋ฆฌ ์์ - ์น MVC ๊ฐ๋ฐ (0) | 2023.02.13 |
[Spring] 3.ํ์๊ด๋ฆฌ ์์ - ๋ฐฑ์๋ ๊ฐ๋ฐ (0) | 2022.07.03 |
[Spring] 2.์คํ๋ง ์น ๊ฐ๋ฐ ๊ธฐ์ด (1) | 2022.07.01 |
[Spring] 1.ํ๋ก์ ํธ ํ๊ฒฝ์ค์ (0) | 2022.06.30 |
์ต๊ทผ๋๊ธ