1. μμ‘΄μ± μ£Όμ μ΄λ?
2. μμ‘΄μ± μ£Όμ μ νμμ±
3. μμ‘΄μ± μ£Όμ μ
4. μμ‘΄μ± μ£Όμ μ μ₯μ
5. μ€νλ§ μ»¨ν μ΄λμ μ€νλ§ λΉ
6. μ€νλ§ λΉμ λ±λ‘νλ λ°©λ²
μμ‘΄μ± μ£Όμ μ΄λ?
- κ°μ²΄ κ° μμ‘΄κ΄κ³λ₯Ό μΈλΆμμ λ£μ΄μ£Όλ κ²
- μ€νλ§ μ»¨ν μ΄λ(=IoC 컨ν μ΄λ)μ μ μλ μ€νλ§ λΉ λ±λ‘ μ 보λ₯Ό λ°νμΌλ‘, μμ‘΄κ΄κ³λ₯Ό μλμΌλ‘ μ£Όμ ν΄μ€λ€.
- κ°μ²΄μ λν μ μ΄ κΆνμ λͺ¨λ μ€νλ§ μ»¨ν μ΄λμ μμλλ©°, μ€νλ§ μ»¨ν μ΄λμμλ μΈμ€ν΄μ€λ€μ λΆνμνκ² μ¬λ¬κ° λ§λ€μ§ μκ³ , λ¨ νλλ§ μμ±νλ μ±κΈν€ λ°©μμΌλ‘ κ΄λ¦¬νμ¬, λ©λͺ¨λ¦¬ κ΄λ¦¬μ ν¨μ¨μ±μ μ 곡νλ€.
μμ‘΄μ± μ£Όμ μ νμμ±
1. ν΄λμ€κ° κ²°ν©λκ° λμ¨ν΄μ§λ€. ( = ν ν΄λμ€κ° λ³κ²½λ κ²½μ°, λ€λ₯Έ ν΄λμ€κ° λ³κ²½λ νμμ±μ΄ μ μ΄μ§λ€)
2. μ±κΈν€μ κ°μ²΄ 곡μ©μΌλ‘ μ¬μ© → λΆνμν κ°μ²΄μ μμ±μ μ€μ΄κ³ , λ©λͺ¨λ¦¬ ν¨μ¨μ± ν₯μ
μμ‘΄μ± μ£Όμ μ
public class MemberService {
private final MemberRepository memberRepository = new MemoryMemberRepository();
...
}
μμ‘΄μ± μ£Όμ μ μ¬μ©νμ§ μμ λ newλ‘ MemoryMemberRepository κ°μ²΄λ₯Ό μμ±νμλ€. κ·Έλ°λ° νμ μλΉμ€(MemberService) μΈμλ κ²°μ μλΉμ€, λ°°μ‘ μλΉμ€ λ±μ΄ μλ€λ©΄, μλΉμ€λ§λ€ λ§€λ² repository κ°μ²΄λ₯Ό μμ±ν νμκ° μλ€. νλμ repositoryλ₯Ό μμ±ν΄λκ³ κ³΅μ©μΌλ‘ μ¬μ©νλ©΄ λλ€.
μ΄λ₯Ό μ€νν μ μλ λ°©λ²μ΄ μ€νλ§ μ»¨ν μ΄λμ κ°μ²΄λ₯Ό λ±λ‘νκ³ μ¬μ©νλ μμ‘΄μ± μ£Όμ μ΄λ€.
public class MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
...
}
μμ‘΄μ± μ£Όμ λ°©λ²μμ new κ°μ²΄λ₯Ό μμ±νμ§ μλλ€. λμ μμ±μμ @Autowired μ΄λ Έν μ΄μ μ΄ μμΌλ©΄ μ€νλ§μ΄ 컨ν μ΄λμ λ±λ‘λ μ°κ΄λ κ°μ²΄λ₯Ό μ°Ύμμ λ£μ΄μ€λ€. μ΄ κ²½μ°μ μ€νλ§μ΄ μ€νλ§ μ»¨ν μ΄λμμ memberRepositoryμ μ°κ΄λ κ°μ²΄λ₯Ό μ°Ύμ λ£μ΄μ€μΌλ‘μ μμ‘΄μ± μ£Όμ μ μ€ννμλ€.
μμ‘΄μ± μ£Όμ μ μ₯μ
1. μ½λ μ¬μ¬μ©μ±μ λμ¬μ€λ€.
2. μ½λλ₯Ό λ¨μν μμΌμ€λ€.
3. κ°λ μ±μ λμΈλ€.
4. κ²°ν©λκ° λμ¨ν΄μ§κ³ μ’ μμ±μ΄ κ°μνλ©°, μ½λ λ³κ²½μ λ―Όκ°νμ§ μλ€.
5. ν μ€νΈμ μ©μ΄νλ€.
μ΄μ μμ‘΄μ± μ£Όμ μ μν΄ κ°μ²΄λ₯Ό μ€νλ§ λΉμΌλ‘ λ±λ‘νλ λ°©λ²μ μμ보μ
μ€νλ§ μ»¨ν μ΄λμ μ€νλ§ λΉ
μ€νλ§ μ»¨ν μ΄λ
- μλ° κ°μ²΄μ μλͺ μ£ΌκΈ°λ₯Ό κ΄λ¦¬νλ 곡κ°
- μ€νλ§ λΉμ μμ±, κ΄λ¦¬, μ κ±° λ±μ μν
μ€νλ§ λΉ
- μ€νλ§ μ»¨ν μ΄λμ μν΄ κ΄λ¦¬λλ μλ° κ°μ²΄
- μ¬μ¬μ© κ°λ₯ν μννΈμ¨μ΄ μ»΄ν¬λνΈ
- new μ°μ°μλ‘ μμ±λ κ°μ²΄λ λΉμ΄ μλ
μ€νλ§ λΉμ λ±λ‘νλ λ°©λ²
1. μ»΄ν¬λνΈ μ€μΊ
β¦ @Component μ΄λ Έν μ΄μ μ΄ μμΌλ©΄ μ€νλ§ λΉμΌλ‘ μλ λ±λ‘λλ€.
β¦ @Componentλ₯Ό ν¬ν¨νλ @Controller, @Service, @Repository μ΄λ Έν μ΄μ λ μ€νλ§ λΉμΌλ‘ μλ λ±λ‘λλ€.
@Service
public class MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
}
2. μλ° μ½λλ‘ μ§μ μ€νλ§ λΉ λ±λ‘νκΈ°
β¦ μν©μ λ°λΌ ꡬν ν΄λμ€λ₯Ό λ³κ²½ν΄μΌ νλ κ²½μ°, μ€μ μ ν΅ν΄ μ€νλ§ λΉμΌλ‘ λ±λ‘νλ€.
β¦ μ€μ νμΌμ @Configuration, μ€νλ§ λΉμ λ±λ‘νλ μμ±μμ @Bean μ΄λ Έν μ΄μ μ λΆμΈλ€.
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
'Spring π±' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Spring JPA] Entityμ @Setterλ₯Ό μ§μν΄μΌ νλ μ΄μ (0) | 2023.07.27 |
---|---|
[JPA] μμμ± μ»¨ν μ€νΈ (0) | 2023.07.25 |
[Spring] μ±κΈν€ 컨ν μ΄λ (0) | 2023.07.19 |
λΉλ ν¨ν΄(Builder Pattern) (0) | 2023.07.17 |
[Spring] JUnit5μ assertJλ‘ ν μ€νΈ μ½λ μμ±νκΈ° (0) | 2023.06.19 |