이번에는 2. 자바 코드로 직접 스프링 빈을 등록하는 방법이다.
기존에 있던 클래스 코드들에 @Component를 다 지우고,
package hello.hellospring.service;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService(){
return new MemberService();
}
}
이렇게 @Configuration을 해주면
스프링이 뜰 때 '이건 스프링빈에 등록하라는 뜻이구나!'라고 인식한다.
-> MemberService를 로직 호출하여 스프링빈에 등록해줌.
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService(){
// Service는 Repository 생성자 필요
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository(){
return new MemoryMemberRepository();
}
}
MemberService는 MemoryMemberRepository가 필요하기 때문에
Repository 생성자를 Service에 포함시켜준다.
이렇게 하면 자동으로 호출이 가능하다.
MemberController은 어쩔 수 없다. 그냥 @Controller, @Autowired를 쓰도록 하자...

그러면 위 그림이 자동 완성되게 된다.
또 생성자 주입이라는 방식도 있다.
3. 생성자 주입
생성자를 통해서 MemberService가 MemberController에 주입이 되는 등의 방식이다.
@Controller
public class MemberController {
private final MemberService memberService;
// @Autowired로 연결 Spring 컨테이너에 등록
/* 생성자: 안에 MemberService가 있음*/
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
'Framework > Spring' 카테고리의 다른 글
| 회원 웹 기능 - 등록 (0) | 2024.01.12 |
|---|---|
| 회원 웹 기능 - 홈 화면 추가 (0) | 2024.01.12 |
| 컴포넌트 스캔, 자동 의존관계 (0) | 2024.01.12 |
| 회원 서비스 테스트 (0) | 2024.01.09 |
| 회원 서비스 개발 (0) | 2024.01.09 |