본문 바로가기

Spring

[Spring] 의존성 주입(Dependency Injection, DI)

 

의존성 주입(Dependency Injection, DI)

 

객체들의 의존관계를 객체 자신이 아닌 스프링 컨테이너가 수행하면서 제어의 역행(Inversion of Control, IoC)이라는 의미로 사용되고 있다.  객체들 간 결합도를 낮추어 주는 효과가 있다.


 

스프링 설정파일

 

Application에서 Spring 자원들을 설정하는 파일, xml기반으로 작성

<bean> : 스프링 컨테이너가 관리할 Bean 객체를 설정

  • name : 주입 받을 곳에서 호출할 이름 설정
  • id : 주입 받을 곳에서 호출할 이름 설정
  • class : 주입할 객체의 클래스
  • factory-method : 싱글톤 패턴으로 작성된 객체의 factory 메서드 호출 시 

설정파일에 설정한 bean을 Container가 제공하는 api를 통해 주입받는다.


 

Constructor를 이용한 객체 주입

객체 또는 값을 생성자를 통해 주입 받는다.

<constructor-arg> : <bean>의 하위태그로 설정한 bean객체 또는 값을 생성자를 통해 주입하도록 설정

객체면 ref 속성을 사용,  값이면 value 속성을 사용한다. 

 

 

 


 

Property를 이용한 객체 주입

property를 통해 객체 또는 값을 주입받는다.  setter 메서드

객체면 ref 속성을 사용,  값이면 value 속성을 사용한다. 

 

 

 


어노테이션을 이용한 객체 주입

 

Namespace에서 context 체크 후 <context:componect-sacn> 태그의 base-pakage 속성으로 범위를 설정

 

 

 

 

객체를 생성하고자 하는 클래스에  @Repository, @Controller, @Service, @Component를 작성

 @Autowired를 통해 의존성 주입 

만약 위처럼 MySQLDao, OracleDAO 객체를 동시에 주입하려고 하면 에러가 발생한다.

@Qualifier를 통해 사용할 객체를 지정해 준다.