본문 바로가기
  • Build Up Routine
backEnd/Java

Spring 이란?(Spring과 Spring Boot)

by 까느.dev 2022. 5. 27.

📣Spring

Spring

스프링이란 무엇인가?

  • JAVA의 웹사이트 개발을 위한 웹 프레임워크이다.
  • JAVA의 활용도가 높아졌고 프로젝트의 규모도 높아짐에 따라 JAVA를 활용한 기술들도 동시에 발전했고([JSP](#), [MyBatis](#), [JPA](#)) 등 )Spring은 이 기술들을 편하게 사용하기 위해 만들어진 것이다.
  • Spring은 중복코드의 사용을 줄여주고, 비즈니스 로직을 더 간단하게 만들어주는 역할을 한다.
  • Spriing은 다른 프레임워크와도 사용성이 좋아 다른 프레임워크와 횬용이 가능하며, 다른 사람의 소스 코드를 참조하여 쓰기 편리한데 오픈소스를 조금 더 효율적으로 가져다 쓰기 좋은 구조이다.
  • Spring을 한줄로 정리하면 **자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크** 와 같다.

프레임워크(Frame Work)란?

  • 프레임워크(Frame Work)란 자주 쓰일만한 기능들을 한데 모아 놓은 유틸(클래스)들의 집합 이다.
  • 즉 프레임워크는 설계의 기반이 되는 부분을 확장 가능한 기반 코드와 사용자가 이 코드를 입맛대로 수정, 확장하는데 필요한 라이브러리 이 두가지 요소가 통합되어 제공되는 형태이다.
  • 프레임워크는 기본적인 설계나 필요한 라이브러리는 알아서 제공해줄테니 개발자는 만들고 싶은 기능을 구현하는데 집중할수 있게 도와주려는 취지해 만들어진 툴이라고 말할 수 있다.
  • 개발자가 구현하고자 하는 기능을 쉽게 제공해줄수 있다는 점에서 라이브러이와 프레임워크는 비슷한 면이 있다.

프레임워크와 라이브러이의 차이점.

  • 라이브러리란 개발자가 프로그램을 짜다가 필요한 순간에 인지하고 만들어진 기능을 가져다 쓰는 것을 말한다. 즉 라이브러리는 프로그램 기능 구현에만 쓰인다.
  • 하지만 **프레임워크는 이미 필요한 라이브러이와 함께 구현에 필요한 설계도 틀을 함께 제공해준다.**
  • 즉 프레임워크는 움직이지않고 기반이되는 설계도 틀을 제공하여 개발자들이 신경쓰지 않아도 빠르게 기능을 확장하거나 유지보수 할 수 있게 구조대한 가이드라인을 제공한다.
  • 프레임워크는 우리가 프레임워크에서 개발을하는 것이며, 규칙이 있어(설계도 틀) 그 규칙안에서 개발을 하며 이미 호출된 라이브러리로 편한 개발환경을 조성해주는 것이며, 라이브러리란 우리가 필요할때 마다 찾아 쓰는 것이라 볼 수 있다.

스프링의 주요 특징.

  1. IOC(Inversion Of Control, 제어반전)
    • 기존의 프로그래밍 방식에선 라이브러리를 호출하여 코드에 포함시켜 프로그램을 실행 시켰지만 스프링에서는 지원하는 형식에 맞게 프로그램을 작성하면 프레임워크에서 사용자가 작성한 코드를 호출해서 사용하는 방식으로 제어의 권한이 역전된 모습을 보여준다.
  2. DI(Dependency Injection, 의존성 주입)
    • 프로그램 구성요소간의 의존 구조를 외부 파일에서 정의해준다.
    • 각 요소 또는 서비스 사이에 의존성이 존재하는 경우 스프링에서 의존 관계를 정의, 외부파일을 통해 설정
    • 설정파일을 분리하기 때문에 유지보수가 쉬워지며 각 구성요소간 결합성이 낮아지게된다.
    • 각 객체가 독립적으로 존재, 연결 자체는 스프링에서 지원한다.
  3. AOP(Aspect Object Programming, 관점 지향 프로그래밍)
    • 관점에 따라 각각의 기능을 불히하여 프로그램 하는것이 가능해진다.
    • 비즈니스 로직 등을 다른 모듈로 분리하여 따로 관리할수있다.
    • 스프링에서는 서로 다른 관점을 조합하는 기능을 제공한다.
    • 이러한 방식은 요지보수가 수월하며 각각의 관전에 최적화된 프로그래밍이 가능해진다.
  4. POJO(Plain Old Java Object, POJO방식)
    • 기존의 일반적인 Java 코드를 이용해서 프로그래밍이 가능하다.
    • 기존의 프레임워크의 방식에선 미리 설계되어있는 인터페이스나 클래스를 상속받아 무거운 객체들을 만들어야만 했는데, 그럴 필요가 없어 일반적인 Java코드로만으로 객체를 구성할 수 있게 된다.
    • 따라서 더 유연한 프로그래밍이 가능해지며 가볍고 생산성이 높아진다.

Spring , Spring Boot 차이

Spring MVC

MVC란 Modle, View, Contrller 를 분리한 디자인 패턴을 말한다.

  • Model
    • 애플리케이션의 상태(data)를 나타낸다.
    • 일반적으로 POJO로 구성된다
    • **JAVA BEANS**
  • View
    • 디스플레이 데이터 또는 프리젠테이션
    • Model data의 랜더링을 담당하며, HTML output을 생성한다
    • **JSP, Thymleaf, Freemaker 등**
  • Controller
    • View와 Model 사이의 인터페이스 역할
    • Model/View에 대한 사용자 입력 및 요청을 수신하여 그에 따라 적절한 결과를 Model에담아 View에 전달한다.
    • 즉, Model Object와 Model을 화면에 출력할 View Name을 반환한다.
    • Controller --> Service --> Dao --> DB
    • **Servlet**

위 3가지를 개발자가 직접 설정해야하며 라이브러리를 가져오고 그에 따른 설정들이 무수하게 따른다. 즉 환경설정에 개발자는 많은 시간을 투자해야하며 각각의 라이브러이에대해 버전관리가 필요 할 수 도 있다.

SpringBoot

스프링 부트의 공식 사이트에서는 이렇게 나와있다.

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".

"단지 실행만 해라!"

스프링부트는 이렇듯 스프링의 단점인 수 많은 설정들을 안하고 실행만 하게끔 도와준다.

참고사이트

https://msyu1207.tistory.com/entry/Spring-VS-Spring-Boot-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90

https://gmlwjd9405.github.io/2018/12/20/spring-mvc-framework.html

https://jerryjerryjerry.tistory.com/62

https://12bme.tistory.com/157

https://bagbokman.tistory.com/7

https://anaog.tistory.com/1

'backEnd > Java' 카테고리의 다른 글

Spring (Controller, Service, Dao 의 역할)  (0) 2022.05.31

댓글