본문 바로가기

Java/Spring Framework

Framework란 2 -Spring boot 기초

반응형

정의

스프링부트는 스프링을 설정하고 사용하기 편하게 하기 위한 스프링 best practice를 모아놓은 스프링래퍼입니다.

스프링을 개선한 새로운 프레임워크가 아닙니다.

스프링은 범용, 경량급, 엔터프라이즈 기반 오픈소스 프레임워크입니다.

 

 

Spring의 역사

로드 존슨이 출판한 도서 'Expert One-on-One J2EE Design and Development' 에 소개한 내용이 근간이 되었습니다. 

당시에는 EJB라는 무거운 .. 이 책을 중심으로 커뮤니티 형성, 오픈소스 공개 등이되었습니다.

스프링은 2.5 버전 이후로 많은 변화가 일어났습니다.

 

Spring Framework 란?

프레임워크란 프로그램의 구조가 미리 정해져있는 것입니다.

프레임워크의 장점이라고 하면 어떤 application을 개발할때 framework 하에서 개발하면 표준화 된다는 점이 있습니다.

따라서 관리하기가 편해집니다.

JAVA를 기반으로 어플리케이션 서비스를 위한 오픈소스 경량급 애플리케이션 프레임워크가 스프링 프레임워크입니다.

 

* 애플리케이션 프레임워크: 특정 계층, 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크

* 경량급 프레임워크: 단순한 웹 컨테이너에서도 엔터프라이즈 개발의 고급기술을 대부분 사용할 수 있다.

 

스프링은 엔터프라이즈 개발에 용이하며 오픈소스입니다.

개발자가 복잡하고 실수하기 쉬운 low level에 많이 신경쓰지 않도록하여 business logic 개발에 전념 가능하게 해주었습니다.

 

 

주된 특징

1. 컨테이너 역할

- 스프링에서 사용하는 모든 객체들을 관리해주는 역할로 spring core 라고 할 수 있다.

- 여기에 올라가는 자바 객체들은 관리된다. 

- 더욱더 안정성있고 빠른 서비스가 가능하며, 개발자가 실수할 가능성도 줄여줘 성능을 향상시킨다.

 

2. DI 지원

- 객체들의 의존관계를 자동으로 컨테이너에서 설정을 통해 관리 가능하도록 한다.

 

3. AOP 지원

- 기존의 객체지향 프로그래밍을 보완할 수 있는 기법으로 스프링에서 이를 그대로 받아들여 Spring AOP라고 부르기도한다. 

- 복잡한 외부 기술을 스프링만의 기술로 수정하여 스프링을 보다 편리하게 사용 가능해진다.

 

4. POJO

- spring에서 사용되는 Java 객체들은 어떤것도 상속받지 않고 단순한 Java 클래스입니다. 

 

5. 트랜잭션 처리

- 엔터프라이즈급의 application들은 데이터를 다루며 이 데이터의 무결성이 중요하다. 데이터의 훼손이 없음을 지원해주는 것이 트랜잭션이다.

- 트랜잭션 처리를 일관되고 쉽게 할 수 있게 제공해준다.

 

6. 영속성과 관련된 다양한 API 지원

- 엔터프라이즈급의 application, service들은 데이터를 계속 저장해줘야한다. 데이터를 저장하는 것이 과거에는 관계형 DB에 저장됐지만, NoSQL 등 다른 서비스들과 연동하여 처리한다.

 

 

Spring framework 5

reactive 기반의 비동기 기술을 지원하고 있습니다.

Spring MVC 부터 데이터 연동까지 비동기로 가능하도록 reactor기술을 통해 지원하고 있습니다.

 

 

Spring과 Maven

개발한 내용에 대해 표준 산출물로 만들어주는 tool을 build tool이라고 합니다.

maven 이라는 tool이 그 역할을 수행해줍니다.

모든 spring project는 maven으로 만들어져있습니다.

maven의 강력한 기능중의 하나는 dependency관리 기능입니다.

외부 라이브러리들을 central repository로 모아두고 쉽게 관리, 설치가 가능하게끔 해줍니다.

maven을 확장시킨 gradle이라는 tool도 나왔지만 비슷한 tool이라 볼 수 있습니다.

 

Gradle

지금까지 자바 진영에서 많이 사용해온 Ant 빌드 툴과 Maven 빌드 툴의 단점을 버리고 장점을 취한 빌드툴입니다. 

Ant 의 가장 큰 장점을 들자면 개발자가 자유롭게 빌드단위를 지정하고(target) 빌드 단위 간의 의존 관계를 자유롭게 설정 가능한 점입니다. 

하지만, 자유도가 높음으로 인해 잘 활용하지 못할 경우 어려움이 있습니다.

 

Maven의 가장 큰 장점은 Convention Over Configuration 전략에 따라 프로젝트 빌드 과정에 대한 많은 부분이 이미 관례로 정해져 있단 점입니다.

따라서, Maven 기반 프로젝트를 경험한 개발자는 Maven기반으로 한 새로운 프로젝트에서도 쉽게 적응가능합니다.

 

Gradle은 Ant의 자유도과 Maven의 관례의 장점을 모두 흡수했습니다.

그리고 Ant 와 Maven 빌드 툴 모두 가지고 있던 xml에 대한 이슈도 Groovy라는 언어를 통해 해결하고 있습니다.

 

 

반응형

'Java > Spring Framework' 카테고리의 다른 글

Spring MVC로 RESTful API 서비스 구현  (0) 2020.03.04
Spring 개발 환경 설정  (0) 2020.03.03
Framework란  (0) 2020.01.06
Spring Project _ Day2(github에 코드 올리기)  (0) 2019.12.25
Spring Project _ Day1  (0) 2019.12.21