SPRING/Spring Boot
스프링 빈과 의존관계 - 자바 코드로 직접 스프링 빈 등록
파이리파
2021. 9. 23. 00:15
회원 서비스와 회원 리포지토리의 @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 등과 같이 스프링이 관리하는 객체에서만 동작한다.
스프링 빈으로 등록하지 않고 내가 직접 생성한 객체에서는 동작하지 않는다.