본문 바로가기
Framework/Spring

자바 코드로 직접 스프링 빈 등록하기

by 파2RI 2024. 1. 12.

이번에는 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