🫛 빈 등록하기
방법 1 : 자바 코드로 등록하는 방법
- @Configuration
@Configuration public class SpringConfig { @Bean public MemberService memberService(){ return new MemberService(memberRepository()); } @Bean public MemberRepository memberRepository(){ return new MemoryMemberRepository(); } }
- 스프링 컨테이너가
MemberService
와MemberRepository
를 스프링 빈으로 등록한다. - 등록된
MemberRepository
를 멤버서비스에 넣어준다.
방법 2 : 애노테이션 이용
- @Service, @Controller, @Respository (모두 @Component 상속)
- 스프링 컨테이너가 패키지 내부를 모두 뒤져 component를 찾아 빈으로 등록한다.
- 싱글톤으로 만들어진다.
- 빈에게 특정 객체를 주입하려면 특정 객체도 빈이여야 한다.
- @Autowired
- 의존성 주입
- 스프링 컨테이너가 등록된 빈 중 주입해야 될 빈을 찾아서 넣어준다.
@Service public class MemberService { private final MemberRepository memberRepository; @Autowired public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; } }
DI에는 필드 주입, setter 주입, 생성자 주입 이렇게 3가지 방법이 있다. 실행중에 의존관계가 변하는 경우는 없어야한다. 초기에만 설정 가능하도록 생성할 때만 의존성을 주입하여 변경한다.
정형화된 빈은 @Service, @Controller, @Respository 으로 등록한다. 하지만 바뀔 여지가 있는 빈은 코드로 등록한다. ( Ex : db가 정해지지 않았을 때.., )
728x90
'스프링 부트' 카테고리의 다른 글
[Spring] SOLID 원칙을 지켜보자 (1) | 2024.03.26 |
---|---|
[Spring] h2적용 후 postman으로 테스트하기 (0) | 2024.02.22 |