[스프링] 스프링이란?

김학재·2021년 3월 12일
2

스프링

목록 보기
1/1
post-thumbnail

스프링을 예전부터 공부하고 싶었으나 이런저런 핑계(졸업작품, 다른 공부 등)로 인해 미뤄왔다.
프론트엔드 공부를 하다보니 자연스레 또 다른 프레임워크들에 관심이 생겼고, 책도 사놨겠다 미뤄뒀던 스프링 공부를 하기로 했다.
하다보니 생소한 개념도 많고 용어들이 많아 하나하나 정리해 가면서 공부해야겠다는 생각이 들어 이렇게 정리를 시작한다.


스프링(Spring)이란?

스프링에 대해 알기 전 먼저 라이브러리프레임워크의 차이점을 알아야 한다.

라이브러리

  • 특정 기능 수행을 위해 활용 가능한 도구들의 집합을 의미한다.
  • 개발자는 코드에 라이브러리를 포함시키고 필요한 기능들을 호출해 사용할 수 있다.

프레임워크

  • 자주 쓰일 만한 기능들을 모두 모아 놓은 클래스들의 집합이다.
  • 기본적인 설계나 필요한 라이브러리를 제공하며 개발자로 하여금 필요한 기능만을 구현할 수 있도록 한다.

스프링, 즉 스프링 프레임워크는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크이다.

특징

1. 의존성 주입 (DI : Dependency Injection)

  • 필요한 객체를 직접 생성하는 것이 아닌 외부로부터 필요한 객체를 받아서 사용한다.
  • 구성요소 간의 의존관계가 소스코드 내부가 아닌 외부의 설정파일을 통해 정의된다.
  • 객체 간의 결합도를 낮춤으로써 재사용이 가능하게 한다.

부품을 갈아 끼운다고 생각하면 될 것 같다.
DI에는 Setter를 사용하는 방식생성자를 사용하는 방식이 존재한다. (이 부분은 나중에 제대로 다뤄보자)

2. 제어 반전 (IoC : Inversion Of Control)

  • 객체의 생성부터 소멸까지의 생명주기, 즉 제어권이 개발자가 아닌 스프링 프레임워크에 있다.

3. 관점 지향 프로그래밍 (AOP : Aspect Oriented Programming)

  • 공통적으로 사용하는 기능들을 분리해 관리할 수 있다.
  • 기능의 코드 핵심부를 채우지 않고도 비즈니스 로직에 핵심적이지 않은 동작들을 프로그램에 추가할 수 있게 한다.

4. MVC 패턴

  • 웹 프로그래밍 개발의 표준 방식이라 할 수 있는 MVC 패턴을 사용한다.
  • DispatcherServlet이 Controller 역할을 담당하여 각종 요청을 적절한 서비스에 분산시켜주며 이를 각 서비스들이 처리를 하여 결과를 생성하고 그 결과는 다양한 형식의 View 서비스들로 화면에 표시될 수 있다.

스프링 부트(Spring Boot)란?

  • Spring 사용 시에 필요한 환경 설정 등을 최소화해 생산성의 향상을 목표로 한다.
  • 내장 서버(WAS : Web Application Server)의 사용을 통해 언제 어디서나 같은 환경에서 스프링 부트를 배포할 수 있다.
  • starter를 사용한 dependency의 자동화를 통해 편의성을 높였다. 다양한 라이브러리의 버전을 고려할 필요가 줄었다.

아직은 스프링이 무엇인지, 각 용어들이 그렇게 와닿지 않는다. 하지만 또 이렇게 정리를 하니 이전보단 더 이해가 가는 느낌이다. 하루빨리 스프링도 내 것으로 만들어야지😁

profile
YOU ARE BREATHTAKING

0개의 댓글