관리 메뉴

Just Do it

스프링의 의존성 주입 본문

신입 개발자가 되기 위해 공부했던 독학 자료들/Spring

스프링의 의존성 주입

Seojoo21 2022. 2. 14. 13:08

*출처: 코드로 배우는 스프링 웹프로젝트 ,구멍가게코딩단, 남가람북스 

 

주입을 받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없다.

어떤 객체에 의존하든 자신의 역할은 변하지 않는다. 

 

스프링에서는 ApplicationContext라는 존재가 필요한 객체들을 생성하고, 필요한 객체들을 주입하는 역할을 해주는 구조이다. 따라서 스프링을 이용하면 개발자들은 기존의 프로그래밍과 달리 객체와 객체를 분리해서 생성하고, 이러한 객체들을 엮는 (Wiring) 작업을 하는 형태의 개발을 하게 된다. 스프링에서는 ApplicationContext가 관리하는 객체들을 빈(Bean)이라는 용어로 부르고, 빈과 빈 사이의 의존관계를 처리하는 방식으로 XML설정, 어노테이션 설정, Java 설정 방식을 이용할 수 있다.

 

스프링의 의존성 주입은 크게 1) 생성자 주입과 2) Setter 주입을 사용한다. Setter주입은 setXXX()와 같은 setter메서드를 작성하고 (또는 Lombok으로 생성하고) @Autowired와 같은 애너테이션을 통해서 스프링으로부터 자신이 필요한 객체를 주입해 주도록 한다.

 

생성자 주입은 이러한 주입을 생성자를 통해서 처리한다. 생성자 주입의 경우 객체 생성 시 의존성 주입이 필요하므로 좀 더 엄격하게 의존성 주입을 체크하는 장점이 있다. 기존에 스프링에서는 생성자 주입을 하기 위해서 생성자를 정의하고 @Autowired와 같은 애너테이션을 추가해야만 생성자 주입이 이루어졌지만 스프링 4.3 이후에는 묵시적으로 생성자 주입이 가능하다.