Spring 이란 ? 

  • 스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 불린다.
  • 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 
  • Spring is an open-source lightweight framework that allows Java EE 7 developers to build simple, reliable, and scalable enterprise applications.
  •  It made the development of Web applications much easier than compared to classic Java frameworks and Application Programming Interfaces (APIs), such as Java database connectivity (JDBC), JavaServer Pages(JSP), and Java Servlet.
  • The Spring framework can be considered as a collection of sub-frameworks, also called layers, such as Spring AOP. Spring Object-Relational Mapping (Spring ORM). Spring Web Flow, and Spring Web MVC.

특징

  • 경량 컨테이너
  • IoC(Invertion of Control: 제어 역행) :  IoC는 컨트롤의 제어권이 개발자에게 있는 것이 아닌 프레임워크가 대신해서 해주는 것을 말합니다. Servlet이나 Bean 같은 코드를 개발자가 직접 작성하지 않고, 프레임워크가 대신 수행합니다. 제어의 역전이라는 말이 어려울 수 있는데, 기존에는 자바 코드를 작성할 때 객체의 생성, 의존관계 설정 등을 개발자가 해줘야 했지만, 프레임워크가 대신해준다는 의미입니다.
  • Di(Dependency Injection: 의존성 주입) : DI란 개발자가 Spring 프레임워크에 의존성을 주입하면서 객체 간 결합을 느슨하게 하는 것입니다. 객체 간 결합이 느슨하면 코드의 재사용성이 증가하고, 단위 테스트가 용이해집니다.
  • AOP(Aspect-Oriented Programming: 관점지향 프로그래밍) : AOP는 핵심기능을 제외한 부수적인 기능을 프레임워크가 제공하는 특징입니다. 예를 들어 Spring 프로젝트에 security를 적용하거나, logging 등을 추가하고 싶을 때 기존 비즈니스 로직을 건들지 않고 AOP로 추가할 수 있습니다.
  • 중복 코드 제거 : JDBC 같은 템플릿을 사용할 때 중복되는 코드도 많고 복잡합니다. 이를 모두 제거합니다.

 

Spring Boot 란?

  • 스프링 부트는 스프링 프레임워크를 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 정말 편하게 스프링을 활용할 수 있도록 돕는다. 실행환경이나 의존성 관리 등의 인프라 관련 등은 신경쓸 필요 없이 바로 코딩을 시작하면 된다. 
  • Spring Boot는 기본적으로 Spring Framework를 설정하는데 필요한 구성을 제거하는 Spring Framework의 확장버전이다.
  • 개발자 입장에서 더 빠르고 효율적으로 프로그램 개발이 가능하도록 도와준다.
  • Spring Boot is built on top of the conventional spring framework.
  • So, it provides all the features of spring and is yet easier to use than spring.
  • Spring Boot is a microservice-based framework and making a production-ready application in very less time.
  • In Spring Boot everything is auto-configured. We just need to use proper configuration for utilizing a particular functionality. Spring Boot is very useful if we want to develop REST API. 

특징

  • Embed Tomcat을 사용하기 때문에, (Spring Boot 내부에 Tomcat이 포함되어있다.) 따로 Tomcat을 설치하거나 매번 버전을 관리해 주어야 하는 수고로움을 덜어준다.
  • starter을 통한 dependency 자동화
    과거 Spring framework에서는 각각의 dependency들의 호환되는 버전을 일일이 맞추어 주어야 했고, 때문에 하나의 버전을 올리고자 하면 다른 dependeny에 까지 영향을 미쳐 version관리에 어려움이 많았다. 하지만, 이제 starter가 대부분의 dependency를 관리해주기 때문에 이러한 걱정을 많이 덜게 되었다.
더보기
  • spring-boot에서 starter란 의존성과 설정을 자동화해주는 모듈을 뜻한다.

    예를 들어, spring-boot-starter-jpa를 의존성 추가했을 때 아래의 일을 해준다.

    - spring-aop, spring-jdbc 등의 의존성을 걸어준다.
    - classpath를 뒤져서 어떤 Database를 사용하는지 파악하고, 자동으로 entityManager를 구성해준다.
    - 해당 모듈들 설정에 필요한 properties 설정을 제공한다(Configuration Processor를 사용하면 효과 UP)
    - 프로젝트를 진행하면서, 공통적으로 사용되는 spring 설정을 모듈로 묶어놓고 사용할 수 있다.
    - 또한 필요한 경우, 상위 프로젝트에서 얼마든지 설정을 덮어쓸 수 있다.
  • XML설정을 하지 않아도 된다.
  •  jar file을 이용해 자바 옵션만으로 손쉽게 배포가 가능하다.
  • Spring Actuaor를 이용한 애플리케이션의 모니터링과 관리를 제공한다.

 

Difference between Spring and Spring Boot

  • Spring Framework는 기존에 EJB를 대신해 자바 애플리케이션을 더 쉽게 만들 수 있게 해 주고, Spring Boot Framework는 Spring Framework보다 개발자가 더더욱 개발에만 집중할 수 있도록 도와주는 프레임워크이다.
  • 프로젝트에서 필수적인 종속성 구성이 필요하다면 Spring을, 일반적인 종속성 구성으로 구현이 가능한 프로젝트라면 Spring Boot로도 충분한 결과를 얻어낼 수 있다.

 

 


[ 참고자료 ]

+ Recent posts