스프링 사출 유형

3936 단어 springjava
Spring은 세 가지 유형의 종속성 주입을 지원합니다.

생성자 주입




@Component
public class SecondBeanImpl implements SecondBean {

    private FirstBean firstBean;

    @Autowired
    public SecondBeanImpl(FirstBean firstBean) {
        this.firstBean = firstBean;
    }
}


이는 다음과 유사합니다.

FirstBean firstBean = new FirstBeanImpl();
SecondBean secondBean = new SecondBeanImpl(firstBean);


이 유형의 종속성 주입은 개체를 인스턴스화하고 초기화합니다.
이 접근 방식에서 빈은 변경 불가능하고 종속성은 null이 아닙니다. 그러나 생성자에 많은 매개변수를 정의하면 코드가 깨끗하지 않습니다.
Spring 4.3부터는 클래스에 단일 생성자가 있는 경우 @Autowired 주석이 필요하지 않습니다.

세터 주입



@Component
public class SecondBeanImpl implements SecondBean {

    private FirstBean firstBean;

    @Autowired
    public setFirstBean(FirstBean firstBean) {
        this.firstBean = firstBean;
    }
}

이는 다음과 유사합니다.

FirstBean firstBean = new FirstBeanImpl();
SecondBean secondBean = new SecondBeanImpl();
secondBean.setFirstBean(firstBean);


이 접근 방식에서 빈은 변경할 수 없으며(나중에 setter를 호출할 수 있음) 필수 종속성이 없으면 NullPointerException이 발생할 수 있습니다.

필드 인젝션




@Component
public class SecondBeanImpl implements SecondBean {

    @Autowired
    private FirstBean firstBean;
}


이 접근 방식은 더 깔끔해 보이지만 종속성을 숨기고 테스트를 어렵게 만듭니다. 생성자 및 설정자 주입은 프록시를 사용하는 반면 필드 주입은 성능에 영향을 줄 수 있는 리플렉션을 사용합니다. 테스트 클래스에서 사용할 수 있습니다.

좋은 웹페이지 즐겨찾기