Spring은 무엇이며, Spring boot와 차이점은 뭘까?
1. Spring의 정의
- JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용한다.
- JAVA의 활용도가 높아지면서, JAVA를 이용한 기술이 JSP, Mybatis, JPA 등의 기술이 생겨났다. 이러한 기술들을 더 쉽게 사용할 수 있게 도와주는 오픈소스 프레임워크라고 보면 된다.
2. 프레임워크(Frame Work)
Spring이 프레임워크라는건 알겠는데, 도대체 프레임워크가 무엇일까?
- 프레임워크는 어떠한 목적을 달성하기 위해, 복잡하게 얽혀 이는 문제를 쉽게 해결하기 위한 약속이자 도구이며, 소프트웨어 개발에 한의 뼈대 역할을 한다.
- 프레임워크는 자주 쓰일 만한 기능들을 모아 놓은 유틸들의 모음이다.
기본적인 설계나 필요한 라이브러리는 알아서 할테니 개발자는 개발 역량에만 집중해라!
3. 스프링 프레임워크의 특징
1. IOC(Inversion of Control, 제어 반전)
- 개발자는 JAVA 코딩시 new 연산자, 인터페이스 호출, 데이터 클래스 호출 방식으로 객체를 생성, 소멸시킨다. 여기서 IOC란 객체의 생성부터 소멸까지 개발자가 아닌 스프링컨테이너가 대신 해주는 것이다.
- 제어권이 개발자가 아닌 IOC에 있으며, IOC가 개발자의 코드를 호출해 필요한 객체를 생성, 소멸 하며 생명주기를 관리하는 것이다.
2. DI(Dependency Injection, 의존성 주입)
- 프로그램에서 구성 요소의 의존 관계가 소스코드 내부가 아닌 외부의 설정 파일을 통해 정의 되는 방식이다.
- 코드 간의 재사용을 높이고, 소스코드를 다양한 곳에 사용하며 모듈 간의 결합도도 낮출 수 있다.
- 대표적으로 라이브러리나 API, 프레임워크를 연동 할 때 연결하는 소스코드를 직접 작성하는게 아닌 외부 파일을 연결해 불러오는 방식이다.
3. AOP(Aspect Object Programming, 관전 지향 프로그래밍)
- 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리 할 수 있다.
- 각각의 클래스가 있다고 가정하고, 각 클래스들은 서로 코드와 기능들이 중복되는 부분이 많다. 코드가 중복될 경우 실용성과 가독성 및 개발 속도에 좋지 않다. 중복된 코드를 최대한 배제하는 방법은 중복되는 기능들을 전부 빼놓은 뒤 그 기능이 필요할때만 호출하여 쓰면 훨씬 효율성이 좋다.
- 즉 AOP는 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법이다.
4. POJO(Plain Old Java Object) 방식
- POJO는 Java EE를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하여 나타난 용어이다.
- 별도의 프레임 워크 없이 JAVA EE를 사용할 때에 비해 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기 용이하고, 객체가 가볍다.
- 즉, getter/setter를 가진 단순한 자바 오브젝트를 말한다.
4. 그래서 스프링 프레임워크 왜 쓰는건데~?
Spring FrameWork 등장의 이유를 어렵게 설명하면
- 의존성 주입을 통해 객체 간 결합을 느슨하게 만들고, 코드 재사용성의 증가 및 단위테스트가 용이하다.
- 중복된 코드를 제거해서 비즈니스 로직에만 집중이 가능하다.
- 다른 프레임워크와의 통합으로 해결하고자 하는 문제를 높은 품질로 해결한다.
라고 설명할 수 있으며 그냥 쉽게 표현하면 개발자들이 앱을 조금 더 쉽게 구현할 수 있도록 도와주려고 탄생했다.
5. 그러면 스프링 프레임워크랑 스프링 부트는 어떻게 다른가요?
Spring Framework는 기능이 많은 만큼 환경설정이 복잡한 편이다. 이에 어려움을 느끼는 사용자들을 위해 나온 것이 바로 Spring Boot이다.
Spring의 많은 설정의 부분들을 자동화하여 사용자가 편하게 Spring을 활용할 수 있도록 돕는다는 것이다.
조금 더 딥하게 들어가 기능적 측면에서 두 프레임워크를 비교해보면
Spring Boot는 빠른시간에 애플리케이션이 제품이 될 수 있도록 하는 것을 목표로 하고 있으며, 스프링과 다르게 애플리케이션을 고수준에서 모니터링하고 추적 할 수 있도록 해주고(Actuator), 서버가 애플리케이션에 통합되기 때문에 우리는 서버에 설치되는 별도의 애플리케이션 서버를 가질 필요가 없다(Enbedded Server Integrations)
출처 :
Spring vs Spring Boot
인터넷에 Spring과 Spring Boot의 차이점을 검색하면 잘 정리된 글들을 확인할 수 있다. 필자는 이를 바탕으로 크게 두개의 주제로 간략하게 정리했다. 첫번째, 두 프레임워크 등장 이유 두번째, 기능
server-engineer.tistory.com
[Spring] Spring 이란 무엇인가?
Spring 이란?JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용한다. JAVA로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀이라 할 수 있다.JAVA의 활용도가 높아지면서, JAVA를 이용한 기술이 JSP,
velog.io
스프링에 대해 간단하게 알아보고 스프링과 스프링부트에 대한 간략한 차이점도 알아봤다.
유튜브를 보다가 우아한테크 10분 테크톡에 아주 재밌고 유익한 발표자료가 있어서 공유한다!
https://www.youtube.com/watch?v=6h9qmKWK6Io