반응형

Spring의 맥락에서 종속성은 특정 클래스가 기능을 수행하기 위해 의존하는 개체 또는 구성 요소를 나타낸다

 DI(Dependency Injection) 의존성 주입 이라고 부른다

결국 의존성 주입은 개체에 대한 종속성의 관리 및 해결을 가능하게 하는 디자인 패턴이자 Spring 프레임 워크의 핵심 원칙이다.

 

 

종속성 주입을 사용하면 클래스 자체가 종속성을 생성하거나 찾는 책임을 지는 대신 외부에서 클래스를 분리하고

해당 종속성을 관리 할 수 있어진다.

--> DI 로 인해 교체하거나 수정할 때 유연하게 변경이 가능해진다.

 

 

종속성 : Spring애플리케이션에서 종속성은 클래스 , 구성요소간의 관계를 나타낸다.

ex) 데이터베이스 연결이 필요한 클래스가 있는 경우 데이터베이스 연결은 해당 클래스에 대한 종속성으로 간주된디.

종속성은 다른 클래스 , 인터페이스 , 데이터베이스 , 웹 서비스  또는 구성속성과 같은 외부 리소스가 될수 있다.

 

의존성 주입 : 필요한 종속성을 개체에 제공하기 위한 Spring에서 사용하는 기술

클래스에서 종속성을 생성하는 것이 아닌 Spring에서 런타임에 필요한 종속성을 클래스에 자동으로 주입해준다.

 

Spring에서는 3가지 유형의 종속성 주입을 지원 한다 .

 

1. Constructor Injection : 클래스의 인스턴스 생성 시 생성자를 통해 종속성을 제공한다.

Spring은 객체를 생성할 때 이러한 종속성을 해결하고 제공한다.

 

2.Setter Injection : Setter method 를 활용하여 설정된다.

 

3.Field Injection : 클래스 내의 필드 또는 속성에 직접 할당한다.

Spring이 자동으로 종속성을 해결하고 할당하는 @Autowired와 같은 주석을 사용한다.

 

주석 기반 종속성 주입 (Annotation-Based Dependency Injection) 

: Spring은 종속성 주입을 단순화하기 위해 아래와 같은 Annotation을 제공한다.

(주석이므로 @붙임)

 

@Autowired : 종속성이 Spring에 의해 자동으로 연결되어야 함을 나타는데 사용된다.

생성자 , 필드 또는 메서드에 적용이 가능하다.

 

@Qualifier : 동일한 유형의 빈이 여러 개 있을 때 @Qualifier는 @Autowired와 함께 어떤 빈을 주입할지 지정하는 데 사용한다.

 

@Resource : @AutoWired와 유사하게 @Resource를 사용하여 종속성을 주입할 수 있다.

빈 이름이나 리소스 위치를 지정하는데  더 많은 유연성을 제공한다.

 

Ioc(Inversion of Control) : Spring 프레임워크의 핵심 원칙을 구현하는 역할을 수행한다.

객체의 라이프사이클 생성, 구성 및 연결을 관리한다.

 

결국 Spring에서 종속성 주입을 활용하면 구성 요소 간의 종속성을 쉽게 관리할 수 있다.

Spring의 IoC컨테이너는 종속성 해결을 처리하므로 유연하고 확장 가능한 애플리케이션을 구축할 수 있다.

반응형

+ Recent posts