모든지 기록하자!

[Spring] Spring 과 Spring Boot 의 차이점은? 본문

Spring

[Spring] Spring 과 Spring Boot 의 차이점은?

홍크 2022. 1. 1. 01:58
728x90

Spring Framework

스프링 프레임 워크는 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로 쓰이고 있다.

 

Spring의 특징

1. IoC (Invertion of Control: 제어 역행)

2. DI(Dependency Injection: 의존성 주입)
3. AOP(Aspect-Oriented Programming: 관점 지향 프로그래밍)

 

 

1 - IoC (Invertion of Control: 제어 역행) 란?

메소드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 말한다.

일반적으로 자바 프로그램은 main 메소드에서 시작해서 개발자가 미리 정한 순서를 따라 객체가 생성되고 실행된다. 서블릿을 개발해서 서버에 배포할 수는 있지만 배포하고 나서는 개발자가 직접 제어할 수 있는 방법은 없다. 대신 서블릿에 대한 제어 권한을 가진 컨테이너 가 적절한 시점에서 서블릿 클래스의 객체를 만들고 그 안에 메소드를 호출한다. 

조립된 코드의 최종 호출은 개발자에 의해서 제어되는 것이 아니라 프레임워크의 내부에서 결정된 대로 이뤄지게 되는데 이러한 현상을 제어 역행 이라고 한다.

 

 

 

2 - DI(Dependency Injection: 의존성 주입) 란?

객체 사이에 필요한 의존 관계에 대해서 스프링 컨테이너가 자동으로 연결해 주는 것을 말한다.

스프링 컨테이너는 DI를 이용하여 빈(Bean) 객체를 관리하며 스프링 컨테이너에 클래스를 등록하면 스프링이 클래스의 인스턴스를 관리해 준다. 

 

스프링 컨테이너에 빈(Bean)을 등록하고 설정하는 방법은 두 가지가 있다.

1. XML 설정을 통한 DI

2. 어노테이션(Annotations)을 이용한 DI 

Spring Boot

스프링 프레임워크는 기능이 많은만큼 환경설정이 복잡한 편이다. 이 것에 어려움을 느끼는 사용자들을 위해 나온 것이 스프링 부트다. 부트는 스프링 프레임워크를 사용하기 위한 설정의 많은 부분을 자동화해준다. 스프링 부트 starter 디펜던시만 추가해주면 바로 API를 정의하고 내장된 톰켓이나 제티로 웹 어플리케이션 서버를 실행할 수 있다. 

 

차이점?

1 - Embed Tomcat을 사용하기 때문에 따로 톰켓을 설치하거나 매번 버전 관리를 하지 않아도 된다.

2 - starter를 통한 dependency 자동화

Spring framework에서는 각각의 dependency들의 호환되는 버전을 일일이 맞추어 주어야 했고,  하나의 버전을 올리고자 하면 다른 dependeny에 까지 영향을 미쳐 version관리에 어려움이 많았다. 하지만 starter가 대부분의 dependency를 관리해주기 때문에 번거로움이 적어졌다.

3 - XML 설정을 하지 않아도 된다.

4 - jar file을 이용해 자바 옵션만으로 손쉽게 배포가 가능하다.

728x90

'Spring' 카테고리의 다른 글

AOP란 무엇인가  (0) 2021.11.11
DI란 무엇인가  (0) 2021.11.11
[스프링, JSP] 모달창 리스트에 적용시키기  (0) 2021.09.02
Spring Annotation  (0) 2021.07.12
Comments