위 글은 해당 카테고리의 수업 강의 자료를 정리한 것입니다.
의존성 주입 (Dependency Injection)
- 마틴 파울러
-
https://www.martinfowler.com/articles/injection.html#FormsOfDependencyInjection
-
- 코드의 내부에서 객체간의 연결을 이루지 않고 외부에서 설정을 통해 객체 간을 연결하는 패턴
- 컴파일시가 아닌 실행시에 의존 관계가 완성되는 방식
- 스프링의 경우 의존성 주입을 쉽게 적용할 수 있는 프레임워크
AOP(Aspect-Oriented Programming) 지원
- 시스템 전반에 필요한 기능들을 모듈화 시키고 비즈니스 로직을 가지는 객체와 결합하는 방식
- cross-concern: 횡단 관심사로 번역
- 보안이나 로깅과 같이 시스템 여기 저기서 필요한 공통적인 기능
- AOP는 횡단 관심사를 분리하고 이를 결합하는 기능이 필요하는데 스프링은 이러한 기능을 프레임워크에서 지원
- Spring AOP는 Proxy 객체를 생성
의존성 주입 예제
- 스프링을 이용하는 환경에서 각각의 객체를 생성하고 이를 스프링의 설정을 통해서 연결
package org.zerock.sample;
import org.springframework.stereotype.Component;
import lombok.Data;
@Component
@Data
public class Chef {
}
package org.zerock.sample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import lombok.Data;
import lombok.Setter;
@Component
@Data
public class Restaurant {
@Setter(onMethod_ = @Autowired)
private Chef chef;
}
스프링이 동작하면서 생기는 일
root-context.xml의 설정 내용이 동작하면서 필요한 인스턴스들(beans)을 생성하고 의존 관계를 파악해서 주입시켜 주는 방식
스프링 4.3 이후의 자동 주입
- 기존에는 @Inject나 @Autowired, @Resource등을 이용해서 주입에 대한 정보를 어노테이션으로 설정
- 스프링 4.3 이후에는 단일 파라미터를 이용하는 생성자에 한해서 특정 타입의 객체를 자동으로 주입 가능
public class SampleHotel {
private Chef chef;
public SampleHotel(Chef chef) {
this.chef = chef;
}
}
'강의 > KOSTA' 카테고리의 다른 글
[Spring] Spring MVC Structure (0) | 2022.05.03 |
---|---|
[Spring] Building a Spring Development Environment (0) | 2022.04.22 |
[JSP/Servlet] Model2 구현 (Day25) (0) | 2022.04.11 |
[JSP/Servlet] Model1 구현 (Day25) (1) | 2022.04.11 |
[JSP/Servlet] Session and Cookies (Day23) (0) | 2022.04.05 |