Back-End 개발자를 목표로 잡고 SpringBoot를 학습한 것을 공유하려고 합니다.

1. framework란?


 

기본을 구성하는 뼈대입니다. 이러한 뼈대가 제공해주는 것은 애플리케이션을 개발하는데 있어서 템플릿과 같다고 할 수 있습니다. 그렇다면 framework를 왜 사용할까요?? 정답은 여러가지 설정과 서로 연결된 것으로 인해서 애플리케이션을 완성하는데 많은 비용이 절감됩니다. ( 여기서 비용은 시간 혹은 노동력이라고 할 수 있습니다.)

 

2. Springframework란?


Springframeworkjava 기반의 웹 어플리케이션을 만들 수 있는 프레임워크입니다. 전체적인 구조는 아래와 같습니다.

출처: spring.io

2-1. 우리는 왜 spring을 사용할까??


  1. Spring은 자바 객체, 라이브러리들을 관리해주며, 톰캣과 같은 WAS 가 내장되어 있어 자바 웹 어플리케이션을 구동할 수 있습니다.
  2. Spring은 경량 컨테이너로 자바 객체를 직접 Spring 안에서 관리합니다. 객체의 생성 및 소멸과 같은 생명 주기(Life cycle)을 관리하며, Spring 컨테이너에서 필요한 객체를 가져와 사용합니다.
  3. DI ( Dependency Injection ) : 의존성 주입입니다. 객체 A와 B가 있을 때 A는 B를 사용한다고 가정합니다. 이때 A는 B를 내부에서 생성하는 것이 아닌 외부의 설정파일들로 인하여 B를 주입받습니다. 그렇기에 A와B의 직접적인 의존성이 줄어들어 유연한 코드를 만들 수 있습니다. B대신 C를 주입하여 다르게 동작하는 로직을 만들 수 있습니다. 
  4. IoC( Inversion of Control ) : 제어의 역전입니다. 말 그대로 method나 class의 호출 작업을 개발자가 아닌 외부에서 결정 되는 것입니다. (여기서 외부는 spring의 container를 의미합니다.)
  5. AOP( Aspect of Programming) : 관점 지향 프로그래밍입니다. AOP 는 OOP( 객체지향 프로그래밍 )에서의 반복되는 공통 기능의 코드를 극복했습니다. AOP는 어떤 로직을 기준으로 핵심적인 로직과 부가적인 로직으로 분리하여 그것들을 관점을 기준으로 모듈화하여 공통된 코드를 줄이는 것입니다. 

 

3. SpringBoot란?


▶ Springframework를 이용하더라도 애플리케이션을 개발하는데 있어서 부가적인 세팅이 필요해 많은 비용이 듭니다. 하지만 SpringBoot는 세팅을 자동화 하여 개발자가 프로그래밍하는데 집중할 수 있게 해줍니다. 현재는 대부분의 개발자들이 SpringBoot를 통해서 개발을 진행합니다. 

 

지금까지 spring과 springboot에 관하여 알아보았습니다. 다음은 spring project를 제작하는 과정을 포스팅하겠습니다. 감사합니다.