본문 바로가기
Spring Boot

스프링 관련 개념

by 지문어 2024. 2. 27.

개발자가 소프트웨어를 개발하기 위해 사용하는 도구

- 프레임워크: 구조 (개발 환경이자 틀)

- 라이브러리: 기능 모음 (애플리케이션 개발에 필요한 클래스, 함수 등을 모아놓은 코드 모음)

 

1. 스프링 프레임워크: 엔터프라이즈 애플리케이션을 위한 개발 환경 제공

※ 엔터프라이즈 애플리케이션: 대규모의 복잡한 데이터를 관리하는 애플리케이션

 

2. 스프링 부트:  스프링 프레임워크를 더 쉽고 빠르게 이용할 수 있도록 도와주는 도구

- 설정이 복잡하다는 스프링의 단점 보완

- 스프링 부트는 스프링에 속한 도구

 

3. 스프링 콘셉트

1) 제어의 역전(IoC, Inversion of Control)

: (객체를 직접 생성하거나 제어하는 것이 아니라) 외부에서 관리하는 객체를 가져와 사용하는 것

 

2) 의존성 주입(DI, Dependency Injection)

: 어떤 클래스가 다른 클래스에 의존한다.(직접 객체를 생성하지 않고 스프링 컨테이너에서 객체를 주입받고 있음)

 

3) 스프링 컨테이너와 빈

(1) 스프링 컨테이너: 스프링 프레임워크의 핵심 요소. 빈을 생성하고 관리

(2) 빈: 스프링 컨테이너가 생성하고 관리하는 객체

 

4) 관점 지향 프로그래밍(AOP, Aspect Oriented Programming)

: 프로그래밍에 대한 관심을 핵심 관점, 부가 관점으로 나누어서 관심 기준으로 모듈화하는 것

 

5) 이식 가능한 서비스 추상화(PSA, Portable Service Abstraction)

: 스프링에서 제공하는 다양한 기능들을 추상화시켜서 개발자가 쉽게 사용하도록 하는 인터페이스

예) 클라이언트의 매핑과 클래스, 메서드의 매핑을 위한 애너테이션

 

4. 정리

- IoC: 객체의 생성과 관리를 개발자가 하는 것이 아니라 프레임워크가 대신하는 것

- DI: 외부에서 객체를 주입받아 사용하는 것

- AOP: 프로그래밍을 할 때 핵심 관점과 부가 관점을 나누어서 개발하는 것

- PSA: 어느 기술을 사용하던 일관된 방식으로 처리하도록 하는 것