ON/실습

[Spring Boot] 스프링 빈과 의존관계 - 자바 코드로 직접 스프링 빈 등록하기 ②

박도비 2023. 11. 23. 21:26
728x90

이전 시간에는 컴포넌트스캔을 통해

Controller, Service, Repositoryspring bean에 등록하고,Autowired를 통해 연결했다.

 

이번시간에는 코드로 직접 스프링 빈을 등록 해 볼 예정이다. 

 

📚 직접 spring bean 등록 

 

1️⃣SpringConfig 클래스 생성 후 @Configuration 어노테이션 추가해준다. 

@Configuration : 설정파일을 만들거나 Bean을 등록하는 어노테이션이다. 
public class SpringConfig {

}

 

 

2️⃣ MemberService를 spring bean에 등록

@Bean
public MemberService memberService() {
    return new MemberService(memberRepository());
}

이렇게 작성하게 되면 @Configuration에서 @Bean을 읽고 spring bean에 등록을 해야겠다! 라고 인식을 할 것이고

return값을 통해 받은 MemberService를 spiring bean에 등록 해 줄 것이다. 

 

 

3️⃣ MemberRepository도 spring bean에 등록

@Bean
public MemberRepository memberRepository(){
    return new MemoryMemberRepository();
}

MemberRepository라는 인터페이스를 선언하고

MemoryMemberRepositroy라는 구현체가 MemberRepository를 상속받아서 필요한 기능을 구현하기로 했다.

따라서 return 값으로 MemoryMemberRepositroy를 전달한다.

 

 

❗ 전체 코드 

@Configuration
public class SpringConfig {

    @Bean
    public MemberService memberService() {
        return new MemberService(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository(){
        return new MemoryMemberRepository();
    }
}

@Bean 어노테이션을 보고 MemberService와 MemberRepository를 spring bean에 등록한다.

동시에 생성자 밑의 memberRepository() 메서드를 호출하여, spring bean으로 등록되어 있는 MemberRepository를 연결해준다. 

728x90