프로그래밍/Spring Framework

Dependency Injection

SSONGMI 2021. 5. 9. 22:40
반응형

1. Dependency Injection

: 객체 간의 의존관계를 외부 조립기가 수행

: 느슨한 결합의 주요 강점 - 객체는 인터페이스에 의한 의존 관계만을 알고 있고, 이 의존 관계는 구현 클래스에 대한 차이를 모르는채 서로 다른 구현으로 대체 가능

 

 

 

2. 스프링의 DI

: Spring Container가 DI 조립기 제공

: 스프링 설정파일으로 객체 간의 의존관계 설정

: Spring Container가 제공하는 API를 이용해 객체 사용

 

 

 

3. 스프링 빈 설정

① XML 문서 : XML 문서 형태로 빈의 설정 메타 정보 기술, <bean> 태그를 통해 세밀한 제어 가능

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

▶ Property : property를 통해 객체 또는 값을 주입 받음(setter method) / <bean>의 하위태그로 설정한 bean 객체 또는 값을 property를 통해 주입하도록 설정

 

 

 

② Annotation : 빈으로 사용될 클래스에 특별한 annotation을 부여해 자동으로 빈 등록가능

→ 반드시 component-scan 설정 필요

→ Stereotype annotation 종류

▶ @Repository : DAO 또는 Repository 클래스에 사용 / AOP의 적용대상을 선정하기 위해 사용

▶ @Service : Service Layer의 클래스 사용

▶ @Controller : MVC Controller에 사용 / 스프링 웹 서블릿에 의해 웹 요청을 처리하는 컨트롤러 빈으로 설정

▶ @Component : 위의 Layer 구분을 적용하기 어려운 경우에 설정

 

 

 

4. 스프링 빈 의존관계 설정 : annotation

① @Autowired : Spring Framework에 종속적이지만 정밀한 의존성 주입이 필요한 경우 유용

▶ 동일 타입 Bean이 여러개일 경우 @Qualifier("name")으로 식별 가능

② @Resource : 특정 Bean이 JNDI 리소스에 대한 Injection을 필요로 하는 경우 사용할 것을 권장

③ @Inject : 특정 Framework에 종속되지 않은 애플리케이션을 구성하기 위해 사용 권장 / 클래스패스 내에 JSR-330 라이브러리 파일 추가가 요구됨

 

 

 

5. 스프링 빈 객체 생명 주기

반응형