본문 바로가기
Develop/Spring

[Spring] Spring Framework 와 Spring Boot

by 코딩의성지 2020. 3. 9.

하이~~ !!

회사에 Spring Framework 기반의 프로젝트가 굉장히 많다. 

그리고 대부분의 프로젝트가 Spring boot로 올려져 있는데, Spring boot는 Spring Framework를 좀 편하게 사용할수 있게 해주는 툴이라고 생각하면 편할 것 같다.

 

Spring Framework란?

 



Spring Framework는 자바플랫폼을 위한 오픈 소스 어플리케이션 프레임워크이다. 간단히 말해서 그냥 스프링이라고 부른다. 특히 동적인 웹 사이트를 개발하기 위한 여러가지 특징적인 서비스를 제공한다.

먼저 Spring Framework는 POJO(Plain Old Java Object) 기반으로 개발을 할 수 있다. 이는 특정 클래스를 상속 받지 않아도 되고 특정한 인터페이스를 구현하지 않아도 아주 단순한 클래스로 구현이 가능하다는 얘기이다.

그리고 AOP(Aspect Oriented Programming, 관점 지향 프로그래밍) 을 지원한다. 이를 통해 트랜재션이나 로깅, 보안 과 같은 공통적으로 필요로하는 모듈들을 실제 핵심적인 역할을 하는 모듈과 분리해서 적용이 가능해진다. 우리가 흔히 아는 엄청나게 복잡하다고 느껴왔던 다양한 서드파티 기술들 역시 추상화 시켜서 간단하게 사용할 수 있도록 제공한다.

 그리고 스프링은 컨테이너 역할을 한다. 즉, 자바 객체의 라이프 사이클을 관리하기 때문에 우리는 스프링 컨테이너에서 우리가 필요로하는 객체만 가져와서 사용하기만 하면된다.

또, 스프링의 주요한 특징 중 하나인 DI (Dependency Injection) 도 기억하자. DI를 통해 스프링은 설정파일이나 어노테이션을 통해 객체간의 의존관계를 설정할 수 있다.

스프링은 트랜잭션 처리를 위한 일관된 방법도 제공한다. 스프링에서 우리는 트랜잭션 구현에 신경을 쓰지 않아도 된다. 설정을 통해 관리되니 우리는 트랜잭션 관련 설정만 잘해주면된다.

마지막으로 스프링은 영속성(Persistence) 과 관련된 다양한 API를 지원한다. 스프링은 mybatis, hibernate 와 같은 데이터 베이스 처리를 위한 ORM( Object Relational Mapping) 프레임워크들과의 연동을 지원한다. 그리고 이런 관계형 DB 뿐만 아니라 몽고 DB 등으로 NOSQL 까지 지원하고 있다.

이처럼 스프링은 하나의 모듈로 이뤄진게 아니다. 모듈은 정말 많고, 우리는 우리가 필요한 모듈만 사용하면 된다. 이렇기에 스프링은 범용적이고 가볍다고 할 수 있다.


 

Spring 5.0

Spring 이 꽤 오랜시간동안 발전해왔다. 벌써 5.0 이다. 5.0의 두드러지는 특징만 알아보자면 5.0은 비동기를 지원한다.

Spring 3.1 부터 멀티 스레딩이라는 기술로 비동기 처럼 사용할 수는 있었지만, 스프링 5.0 에서는 reactive라는 기술 (reactor라는 이름으로 제공) 로 비동기를 지원한다. 비동기가 지원되려면 End to End로 전부 비동기로 지원이 되야하는데 만약에 프론트에서 백엔드로 연결되는 과정에서 하나라도 동기면 그건 동기지 비동기가 아니다. 그걸 지원해주는게 바로 reactor 이다. 그리고 스프링 4 까지 지원하는 동기 기술인 servlet stack 역시 그대로 지원한다. 


 

Spring Boot 란?

 



처음에 말한 것처럼 Spring Boot는 스프링 프레임워크를 조금더 편하게 사용할 수 있게 해주는 툴이다. 조금 고급스럽게 표현해보자면 스프링의 Best Practice 만 모아 놓은 스프링 래퍼라고 표현할 수 있다.

 



스프링 부트는 스프링 기반의 production-ready 어플리케이션 개발이 가능하다. 이것저것 미리 설정해놓은다는 말인데 이렇게 미리 설정했다고 해서 오버헤드가 막 발생하거나 그런건 아니니깐 믿고 안심하고 사용하자.

그리고 스프링 부트는 Convention over configuration 을 따른다. 스프링 프레임워크는 커뮤니티가 굉장히 잘 되어있다. 그 커뮤니티에서 가장 세팅이 잘되어있다고 판단되는 설정을 그대로 가져오겠다는 말이다.

그리고 스프링 부트에서 프로젝트를 만들면 톰캣이 내장되어 있어 단독으로 실행이 가능하다. 그리고 우리가 스프링 프레임워크 프로젝트를 세팅할때 XML에다가 막 설정값을 넣어주고 했는데 .. 스프링 부트로 프로젝트를 구축하면 그런 걱정을 덜 수 있다.


 

Spring 과 Maven


스프링 5.0 까지 오니 스프링은 굉장히 안정적이게 되었다. 표준화도 이루어지고 속도도 빠르고 이전에 비해서 굉장히 좋아졌다. 그러다보니 빌드하는 방식도 굉장히 많아졌다. Gradle, Ant... 그리고 여러분이 다들 아시는 Maven 까지.. ㅎㅎ

다들 익수하다 보니 Maven으로 많이쓴다. Maven은 Spring 의 외부 의존 라이브러리를 간편한게 추가할 수 있도록 의존성 주입을 제공한다. 그 외의 오픈소스 라이브러리도 Maven Repository에 업로드 함으로서 대부분의 라이브러리를 자동으로 추가할 수 있다. 그리고 Maven을 통해서 우리는 프로젝트 구조를 자동으로 구성할 수 있다. 




반응형

댓글