Super Kawaii Cute Cat Kaoani [spring boot] 스프링/스프링 부트란?

[spring boot] 스프링/스프링 부트란?

2024. 1. 20. 03:53
728x90
SMALL

📌 스프링(Spring)이란?

자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다.

✔ 오픈소스란? 소스 프로그램이 공개되어 자유롭게 수정하고 재배포 할 수 있는 프로그램을 뜻한다.

✔ 프레임워크란? 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조로, 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다.  자주 쓰일 만한 기능들을 한 곳에 모아 놓은 클래스들의 모음

 

 

📌 스프링 특징

1. IoC(Inversion of Control) : 제어 역전

  • 컨트롤러의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자 코드를 호출한다.
  • 인스턴스의 생성부터 소멸까지 객체 생명 주기 관리를 개발자가 하는게 아니라 컨테이너(스프링)가 대신 해주는 것

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

  • 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
  • 프로그래밍에서 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정 파일을 통해 정의되는 방식이다.
  • 코드 재사용을 높여 소스코드를 다양한 곳에 사용할 수 있다.

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

  • 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
  • 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법

4. 영속성과 관련된 다양한 서비스 지원

  • iBATIS나 하이버네이트 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.

5. 높은 확장성

  • 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감사는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.

 

 

📌 스프링의 주요 모듈

제어 역전(IoC : Inversion of Control) 컨테이너

  • 제어 역전 컨테이너는 스프링의 가장 중요하고 핵심적인 기능으로서 자바의 반영(reflection)을 이용해서 객체의 생명주기를 관리하고 의존성 주입(Dependency Injection)을 통해 각 계층이나 서비스들간의 의존성을 맞춰준다.
  • 주로 환경설정을 담당하는 XML 파일에 의해 설정되고 수행되었으나 현재는 Auto Configuration을 이용한 야믈(YML, YAML)로 구성하기도 한다.

관점 지향 프로그래밍(Aspect-Oriented Programming, AOP) 프레임워크

  • 스프링은 로깅이나 보안, 트랜잭션 등 핵심적인 비지니스 로직과 관련이 없으나 여러 곳에서 공통적으로 쓰이는 기능들을 분리하여 개발하고 실행 시에 서로 조합할 수 있는 관점 지향 프로그래밍(AOP)을 지원한다.
  • 기존에 널리 사용하고 있는 강력한 관점 지향 프로그래밍 프레임워크인 AspectJ도 내부적으로 사용할 수 있으며, 스프링 자체적으로 지원하는 실행시(Runtime)에 조합하는 방식도 지원한다.

데이터 액세스 프레임워크

  • 스프링은 데이터 베이스에 접속하고 자료를 저장 및 읽어오기 위한 여러 가지 유명한 라이브러리, 즉 JDBC, iBATIS(MyBatis), 하이버네이트 등에 대한 지원 기능을 제공하여 데이터베이스 프로그래밍을 쉽게 사용할 수 있다.

트랜잭션 관리 프레임워크

  • 스프링은 추상화된 트랜잭션 관리를 지원하며 XML 설정파일 등을 이용한 선언적인 방식 및 프로그래밍을 통한 방식을 모두 지원한다.

모델-뷰-컨트롤러 패턴

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

배치 프레임워크

  • 스프링은 특정 시간대에 실행하거나 대용량의 자료를 처리하는데 쓰이는 일괄 처리(Batch Processing)을 지원하는 배치 프레임워크를 제공한다. 기본적으로 스프링 배치는 Quartz기반으로 동작한다.

스프링부트

  • Java 기반의 웹 애플리케이션을 빠르고 쉽게 개발하기 위한 프레임워크
  • 스프링 프레임워크의 기능과 생산성을 향상시키기 위해 개발됨

 

반응형

 

 

📌 스프링 부트(Spring Boot )란?

➡ 스프링(Spring)을 더 쉽게 이용할 수 있게 만들어주는 라이브러리

 

 

📌 스프링 부트(Spring Boot ) 장점

1. 라이브러리 관리 자동화

  • Spring boot Starter 라이브러리를 등록해서 라이브러리 의존성을 간단히 관리할 수 있다.

2. 라이브러리 버전 자동 관리

  • 내장된 의존성 관리 기능을 제공해주며 이를 통해 라이브러리 버전을 쉽게 관리하고, 호환성 문제를 최소화해준다.

3. 설정 자동화

  • 애플리케이션에서 사용되는 다양한 구성 요소를 자동으로 설정해준다.
  • @EnableAutoConfiguration 애노테이션 선언해서 자주 사용했던 설정들을 알아서 등록해줌

4. 내장 톰캣(Tomcat)

  • 내장된 서버를 포함하고 있어, 별도의 웹 서버 설치 없이 웹 애플리케이션을 실행할 수 있다.

5. 애노테이션

  • 기본적으로 모든 빈(Bean) 설정을 XML이 아닌 애노테이션 방식으로 처리한다.

 

 

 

728x90
LIST

BELATED ARTICLES

more