[ JAVA ]/JAVA Spring

[ Spring ] Spring 용어 키워드 간단 정리

환이s 2023. 1. 6. 14:42
728x90

오늘부터 Spring의 포스팅을 시작하려고 합니다!

이전 포스팅은 Java 기초 부분에 대해서 포스팅을 해보았는데 어느 정도 Java에 대해서 알았다면 이제 단계에 맞춰서 Spring에 대해서 공부를 시작할 수 있는데, 오늘은 스프링 부트를 공부할 때 Java에 대한 기본적인 지식은 있었지만 그렇다 하더라도 모르는 용어나 키워드가 너무 많기 때문에 Spring 관련 키워드나 용어를 정리해서 작성해보려고 합니다!

 

 

1 ) Spring 이란?

 

스프링은 자바 기반의 웹 어플리케이션을 만들 수 있는 프레임워크입니다.

spring.io 사이트에서 확인하면 스프링 프레임워크는 현대 자반 기반의 엔터프라이즈 애플리케이션을 위한 프로그래밍 및 Configuration Model을 제공합니다.

 

1-2 ) Spring 특징

 

  • Spring은 자바 객체와 라이브러리들을 관리해 주며, 톰캣과 같은 WAS가 내장되어 있어 자바 웹 애플리케이션을 구동할 수 있습니다.
  • Spring은 경량 컨테이너로 자바 객체를 직접 Spring 안에서 관리합니다. 객체의 생성 및 소멸과 같은 생명 주기(Life cycle)를 관리하며, Spring 컨테이너에서 필요한 객체를 가져와 사용합니다.

 

 

2 ) 스프링 부트란? 

 

웹 개발을 하려면 톰캣, 제티, 언더토우 같은 서블릿 컨테이너를 설치하고, 프로젝트 내에 필요한 환경을 구성해야 합니다. 대표적인 자바 애플리케이션 프레임워크인 스프링 역시 개발 환경 설정이 만만치 않습니다.. 스프링은 자바 대표 프레임워크로 안정성, 성능, DI(의존성 주입) 등 매우 강력한 장점을 지니고 있습니다.

 

2-1 ) 스프링 부트 특징

 

  • 임베디드 톰캣, 제티, 언더토우를 사용하여 독립 실행이 가능한 스프링 애플리케이션 개발
  • 통합 스타터를 제공하여 메이븐.그레이들 구성 간소화
  • 스타터를 통한 자동화된 스프링 설정 제공
  • 번거로운 SML 설정을 요구하지 않음
  • JAR을 사용하여 자바 옵션만으로도 배포 가능

 

그럼 이제 Spring 용어에 대해서 알아봅시다.

 

3 ) Sping 용어 정리

 

DI(Dependency Injection)

 

  • DI는 의존성 주입이란 뜻을 가지고 있습니다. 클래스 사이의 의존 관계를 빈(Bean) 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 말합니다.
  • 외부(Framework)에 의해 의존 객체가 동적으로 주입되므로, 여러 객체 간의 결합(의존도)이 줄어듭니다.
  • 의존성 주입을 위해서는 객체를 생성하고 넘겨주는 외부의 무언가가 필요하게 되는데, 우리는 Spring Framework에서 이를 해결합니다.
  • 의존 객체를 생성하고 주입시켜 주는 곳이 Spring에서는 Bean Container가 됩니다.

 

Dependency Injection의 장점

 

  • 종속성(의존성)이 줄어든다.
  • 종속성이 줄어드므로, 변경에 민감하지가 않습니다.
  • 재사용성이 증가합니다.
  • 다른 클래스에서도 이러한 의존 객체가 필요한 경우, Bean 컨테이너에서 의존 객체를 주입해줄 수 있습니다.
  • 테스트 코드를 작성하는 것에 대한 불편함이 줄어듭니다.
  • 코드의 가독성이 올라갑니다.

 

Build

 

  • 소스코드 파일을 컴퓨터에서 실행시킬 수 있도록 가공하는 것, 실행 가능한 파일로 만드는 것을 의미합니다.

 

Redis

 

  • 오픈소스 기반의 비관계형 데이터베이스 관리 시스템을 의미합니다. 주로 캐시 용도로 많이 사용하고 있습니다.

 

JDBC

 

  • Java에서 데이터베이스에 접근할 수 있는 Java 인터페이스를 의미합니다.

 

REST API

 

  • 웹 설계의 우수성을 제대로 사용하기 위한 Architecture인 REST를 기반으로 설계된 API를 의미합니다.

 

IOC(Inversion of Control)

 

  • 컨테이너가 코드 대신 오브젝트의 제어권을 갖고 있어 IOC(제어의 역전)이라고도 합니다. 예를 들어, 서블릿 클래스는 개발자가 만들지만, 그 서블릿의 메서드를 알맞게 호출하는 것은 WAS입니다. 이렇게 개발자가 만든 어떤 클래스나 메서드를 다른 프로그램이 대신 실행해주는 것을 IOC라고 합니다.

 

WAS(Web Application Server)

 

  • WAS는 일종의 미들웨어로 웹 클라이언트(웹 브라우저)의 요청 중 웹 애플리케이션이 동작하도록 지원하는 목적을 가지고 있습니다.(Tomcat)
  • 웹 서버의 기능들을 구조적으로 분리하여 처리하려는 목적

※  컨테이너 담당 : 다양한 기능을 수행하는 로직

※  웹 서버 담당 : 클라이언트로 부터 요청받는 일과 화면에 표현하는 로직

 

Servlet

 

  • 자바 웹 애플리케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할입니다.
  • Servlet을 정의해보면 Servlet은 WAS(Web Application Server)에 동작하는 Java Class입니다.
  • Servlet은 HttpServlet 클래스를 상속받아야 합니다.
  • Servlet과 JSP로부터 최상의 결과를 얻으려면, 웹 페이지를 개발할 때 이 두 가지(JSP, Servlet)를 조화롭게 사용해야 합니다.

 

AOP(Aspect Oriented Programing)

 

  • 관점 지향 프로그래밍
  • 어떤 로직을 핵심적 관점, 부가적 관점으로 나눠서 보고 그 관점을 기준으로 각각 모듈화(공통된 로직이나 기능을 하나의 단위로 묶는 것)해줍니다.

 

Container(컨테이너)

 

  • Container는 인스턴스의 생명주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공합니다.
  • 자바 객체를 스프링에서는 빈(Bean)이라고 부릅니다.
  • IOC와 DI의 원리가 스프링 컨테이너에 적용됩니다.

 

DTO(Data Transfer Object)

 

  • 계층 간 데이터 교환을 위한 객체(Java Beans)
  • DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체입니다.
  • 로직을 갖고 있지 않는 순수한 데이터 객체입니다 (getter, setter)

 

DAO(Data Access Object)

 

  • 실제로 DB에 접근하는 객체입니다.
  • Service와 DB를 연결 하는 고리의 역할을 합니다.
  • SQL를 사용해서 DB에 접근한 후 적절한 CRUD API를 제공합니다.

마치며 

 

이번 포스팅에서는 Spring에서 많이 낯설었던 키워드나 용어 위주로 간단하게 정리해 보았습니다. 이번 포스팅에서 다루었던 키워드 중에 일부는 더 자세한 포스팅을 통해서 더 자세하게!! 다룰 예정입니다!! 이번 포스팅은 여기서 마무리하고 다음에 관련 내용 또는 다른 내용으로 새로운 포스팅을 작성해 보겠습니다.

 

 

 

 

728x90