Devlog
article thumbnail

위 글은 해당 카테고리의 수업 강의 자료를 정리한 것입니다.

 

 

의존성 주입 (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의 context 항목 선택
root-context.xml의 context 항목 내용 작성

 

 

 

 

스프링이 동작하면서 생기는 일

root-context.xml의 설정 내용이 동작하면서 필요한 인스턴스들(beans)을 생성하고 의존 관계를 파악해서 주입시켜 주는 방식

 

 

 

 

스프링 4.3 이후의 자동 주입

  • 기존에는 @Inject나 @Autowired, @Resource등을 이용해서 주입에 대한 정보를 어노테이션으로 설정
  • 스프링 4.3 이후에는 단일 파라미터를 이용하는 생성자에 한해서 특정 타입의 객체를 자동으로 주입 가능
public class SampleHotel {
  
  private Chef chef;
  
  public SampleHotel(Chef chef) {
    
    this.chef = chef;
    
  }
 
}
profile

Devlog

@덩이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그