Spring

스프링 프레임워크와 의존성 주입

yeooniyeoon 2023. 3. 7. 20:15
728x90
SMALL

스프링 프레임워크와 의존성 주입

스프링이란 오픈 소스의 경량 프레임워크이다.

오픈 소스란 소스 코드가 공개되어 있는 것이고,

경량 프레임워크란 사용 시 메모리나 CPU 자원이 많이 들지 않거나 사용이 쉽고 간편한 경우를 지칭한다.

프레임워크란 확장하여 사용 가능한 코드를 말하는데

여기서 확장이란 프레임워크가 제공하는 클래스나 라이브러리를 사용하거나 상속 및 구현을 통해 프레임워크의 일부로 실행하는 것을 말한다.

 

 

의존성 주입

의존성 주입은 IoC를 디자인 패턴으로 구현하는 방법 중 하나로, 한 클래스가 의존하는 다른 클래스들을 외부에서 주입하는 것이다.

여기서 IoC란 제어의 역전을 말하며, 디자인패턴 중 하나이다.

제어의 역전이란 오브젝트 생성 및 소멸 등의 제어를 프레임워크나 컨테이너에게 넘기는 것을 말한다.

 

의존성 주입은 한 오브젝트가 의존하는 오브젝트를 외부에서 넘겨받는 것으로

의존성 주입하는 방법에는 생성자를 이용해 주입하는 방법과 Setter 메소드를 이용해 주입하는 방법이 있다.

 

생성자를 이용해 주입하는 경우

private class TodoService {
	private final ITodoPersistence persistence;	// 인터페이스
    
    public TodoService(ITodoPersistence persistence) {
    	this.persistence = persistence;		//외부에서 오브젝트를 넘겨받음
    }
}

 

Setter 메소드를 이용해 주입하는 경우

public class TodoService {
	private final ITodoPersistence persistence;
    
    public void setITodoPersistence(ITodoPersistence persistence) {
    	this.persistence = persistence;
    }
}
public static void main(String[] args) {
	ITodoPersistence persistence = new FileTodoPersistence();
    TodoService service = new TodoService();
    service.setITodoPersistence(persistence);
}

 

이런 의존성 주입을 전문적으로 해주는 것이 의존성 주입 컨테이너이고 그 중 하나가 '스프링 프레임워크'이다 ! ! !

 

스프링 프레임워크

스프링 프레임워크 같은 의존성 주입 컨테이너를 사용하는 이유는

프로그램의 규모가 커질 수록 관리해야 할 오브젝트가 많아지고 오브젝트 생성에도 시간이 많이 걸리기 때문에

이런 경우 의존성 주입 컨테이너를 사용해 효율적으로 오브젝트 생성 및 관리가 가능하다.

 

어떤 서비스를 구현하기 위해 클래스를 작성하고 이 오브젝트를 사용하려면 메인 또는 서비스를 사용하는 클래스에서 오브젝트를 생성해야 한다.

서비스가 여러 개일 경우 일일히 오브젝트들을 생성해야 하는데 이런 경우 스프링 프레임워크 같은 의존성 주입 컨테이너가 사용된다.

 

스프링 프레임워크 이용하면 어노테이션/XML/자바 코드를 사용해

오브젝트(=빈) 간 의존성을 명시할 수 있다.

(셋 중에 요구사항에 따라 맞는 방법을 사용하면 된다.)

그러면 어플리케이션 시작 시 스프링 프레임워크의 IoC 컨테이너라는 자바 오브젝트를 이용해

프로젝트를 생성 및 관리해준다.

 

 

스프링 부트

스프링 부트 사용 시 스탠드얼론 프로덕션급의 스프링 기반 어플리케이션을 쉽게 구동할 수 있다.

스탠드얼론이란 어플리케이션 실행 시 다른 어플리케이션이 필요하지 않다는 뜻이다.

스프링부트는 임베디드 톰캣이나 제티같은 웹 서버를 어플리케이션 실행 시 같이 실행 및 설정해준다.

=> 스프링 부트 어플리케이션을 실행하는 것 = 웹 서버를 실행하는 것

 

또한 스프링 부트는 많은 부분을 자동으로 설정해주기 때문에 개발자가 복잡하게 설정해야 하는 것들을 최소로 해준다...

 

 

728x90
반응형
SMALL