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

service 패키지 아래에 SpringConfig 클래스를 만든다. MemberService, MemberRepository 를 생성해서 스프링 빈에 등록하고, MemberRepository를 MmeberService에 연결시켜준다!

package hello.hellospring.service;

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

//memberService, memberRepository 생성해서 스프링빈에 등록하고, 후자를 전자에 연결시켜준다~!
@Configuration
public class SpringConfig {
    @Bean
    public MemberService memberService(){
        return new MemberService(memberRepository());
    }
    @Bean
    public MemberRepository memberRepository(){//인터페이스(MemberRepository)
        return new MemoryMemberRepository();//구현체(MemoryMemberRepository)
    }
}

장점 DB가 선정되지 않은 가정에서 MemberRepository를 인터페이스로 생성하고, MemeoryMemberRepository로 구현체를 생성하였는데 나중에 위의 설정 파일에서 아래처럼 DbMemoryRepository()하나만 변경해주면 DB 연결 손쉽게 가능하다!

  • Dependency Injection

1. 필드 주입 : 스프링 뜰 때만 넣어주고, 중간에 바꿀 수 없다.

2. Setter 주입 단점 : setMemberService가 public으로 열려있기 때문에 어느 개발자든 누구나 이것을 호출할 수 있게 된다. 어플리케이션이 조립될 때 딱 한번 주입되고 끝나야하는데 public의 Setter로 주입하게 되면 public의 특징으로 문제가 생길 수도 있다.

3. 생성자 주입 어플리케이션이 조립될 때 딱 한번 객체 넣어주고 끝난다.

Last updated

Was this helpful?