회원 서비스와 회원 리포지토리의 @Service, @Repository, @Autowired 애노테이션을 제거하고,
SpringConfig를 만들어 직접 스프링 빈을 등록
package hifive.hifivespring;
import hifive.hifivespring.repository.MemberRepository;
import hifive.hifivespring.repository.MemoryMemberRepository;
import hifive.hifivespring.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();
}
}
▶ DI의 3가지 방법
- 필드 주입
- setter 주입
- 생성자 주입
(** 의존관계가 실행중에 동적으로 변하는 경우는 거의 없으므로 생성자 주입을 권장)
- 정형화 되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록한다.
주의: @Autowired 를 통한 DI는 helloConroller , memberService 등과 같이 스프링이 관리하는 객체에서만 동작한다.
스프링 빈으로 등록하지 않고 내가 직접 생성한 객체에서는 동작하지 않는다.
'SPRING > Spring Boot' 카테고리의 다른 글
[스프링 통합테스트] @Spring, @Transactional (0) | 2021.09.23 |
---|---|
[회원 웹 기능] - 홈 화면 추가 (0) | 2021.09.23 |
스프링 빈과 의존관계 - 컴포넌트 스캔 (0) | 2021.09.22 |
[회원 리포지토리 테스트 케이스 작성] (0) | 2021.09.22 |
[회원관리 예제] Back-End Develop (0) | 2021.09.21 |