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컨테이너는 종속성 해결을 처리하므로 유연하고 확장 가능한 애플리케이션을 구축할 수 있다.
'Spring' 카테고리의 다른 글
[Spring] SOLID 5원칙 정의, 장점 (0) | 2023.07.08 |
---|---|
[Spring] IOC / DI 컨테이너의 정의와 역할 (0) | 2023.07.07 |
[Spring] 테스트 방식 JUnit 단위테스트 (0) | 2023.07.05 |
[Spring] 웹 브라우저 동작환경 (0) | 2023.07.04 |
[Spring Boot] 스프링 웹 개발 기초(MVC) (0) | 2023.06.26 |