스프링 빈과 의존 관계

Haechan Kim·2022년 7월 8일
0

Spring

목록 보기
8/69

스프링 빈(Bean): Spring IoC 컨테이너가 관리하는 자바 객체들

  • 스프링 빈 등록 방법 1: 컴포넌트 스캔 (어노테이션)
@Controller // 어노테이션 있으면 스프링 컨테이너에서 자동으로 생성
public class MemberController {
    private final MemberService memberService; // 스프링 컨테이너에 등록하고 하나만 씀. 계속 new로 새로운 객체 만드는 것 아니라

    // 생성자 주입 추천
    @Autowired // 컨트롤러 생성될 때 스프링 빈에 등록되어 있는 서비스 객체 가져다 넣어줌: DI(의존관계 주입)
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }
}

컨트롤러, 서비스, 레파지토리에 모두 적용해야 함.
@Component 어노테이션이 있으면 스프링 빈으로 자동 등록
Controller, Service가 Component 포함하고 있음.
@Repository는 구현체에 적용.

  • 스프링 빈 등록 방법 2: 코드로 직접 등록(SpringConfig)
// 컴포넌트 스캔, 자동 의존관계 설정(어노테이션) 대신 직접 코드로 스프링 빈 등록
// 실무에서는 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔 사용.
// 정형화 되지 않거나 상황에 따라 구현 클래스 변경해야 한다면 설정 통해 스프링 빈 등록

@Configuration
public class SpringConfig {
    @Bean // 내가 스프링 빈 등록할것이라는 뜻
    public MemberService memberService() {
        return new MemberService(memberRepository()); // ctrl+p 무엇을 넣어야 할 지
    }

    @Bean
    public MemberRepository memberRepository() {
        return new MemoryMemberRepository(); // MemberRepository는 인터페이스. 인터페이스는 new가 안됨
    }
}

0개의 댓글