Spring/inflearn

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

곽수진 2022. 8. 29. 23:45
반응형

package hello.hellospring;

import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import hello.hellospring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SpringConfig {

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

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

▶ MemberRepository와 MemberService의 @Service, @Repository, @Autowired 애노테이션을 제거하고 진행함

▶ 애노테이션을 지정하지 않는 대신 Configuration 파일을 생성

XML로 설정하는 방식은 최근에 잘 사용하지 않음

▶ DI에는 필드 주입, setter 주입, 생성자 주입 방법이 있지만 의존 관계가 실행 중에 동적으로 변하는 경우는 거의 없으므로 생성자 주입을 권장

▶ 실무에서는 주로 정형화된 Controller, Service, Repository 같은 코드는 컴포넌트 스캔을 사용하고 정형화 되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록함

▶ @Autowired를 통한 DI는 helloController, memberService 등과 같이 스프링이 관리하는 객체에서만 동작하고 스프링 빈으로 등록하지 않고 직접 생성한 객체에서는 동작하지 않음

반응형

'Spring > inflearn' 카테고리의 다른 글

회원 웹 기능 - 등록  (0) 2022.08.31
회원 웹 기능 - 홈 화면 추가  (0) 2022.08.30
컴포넌트 스캔과 자동 의존관계 설정  (0) 2022.08.28
회원 서비스 테스트  (0) 2022.08.25
회원 서비스 개발  (0) 2022.08.24