SpringBoot와 뒷받침하는 것들

gyeorrr·2025년 7월 14일

Spring

목록 보기
1/3

네, 알겠습니다. 제안해 드린 내용을 기존 글에 통합하여 하나의 완성된 버전으로 만들어 드리겠습니다.


🍃 Spring & Spring Boot 핵심 개념

스프링 프레임워크: 자바 애플리케이션 개발을 위한 포괄적인 프로그래밍 및 구성 모델. 스프링의 핵심 원칙과 스프링 부트의 주요 특징을 정리.

Ⅰ. Spring Framework 핵심 원칙

스프링의 근간: IoC (제어의 역전), DI (의존성 주입), AOP (관점 지향 프로그래밍).

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

객체의 생성부터 소멸까지, 모든 생명주기를 개발자가 아닌 프레임워크가 대신 관리

  IoC 컨테이너: 스프링이 객체를 직접 생성하고 관리하는 공간.
개발자는 프레임워크 규칙에 맞게 설계, 제어권은 프레임워크에 위임.

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

객체가 필요로 하는 다른 객체(의존성)를 외부에서 주입하는 디자인 패턴. IoC 구현 방식.

  효과: 객체 간 결합도(Coupling) 저하, 코드 재사용성 및 유지보수성 향상.
대표 DI 어노테이션: @Autowired

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

핵심 비즈니스 로직과 부가 기능(공통 관심사)을 분리하여 개발하는 방식.

  공통 관심사 예시: 로깅, 트랜잭션, 보안.
효과: 코드 중복 감소, 핵심 로직의 가독성 및 집중도 향상.


Ⅱ. Spring의 주요 컴포넌트 어노테이션

IoC 컨테이너가 객체를 찾아서 등록(Bean 등록)하기 위해 사용하는 핵심적인 어노테이션들. 각 어노테이션은 클래스의 역할을 명시.

  * @Component: 가장 기본이 되는 컴포넌트 스캔 어노테이션. 역할이 애매한 경우 사용.

  @Controller / @RestController
역할: 사용자의 요청을 처리하는 웹(Presentation) 계층을 명시.
* @RestController@ResponseBody가 포함되어 JSON/XML 형태의 데이터 반환에 특화.

  @Service
역할: 핵심 비즈니스 로직을 처리하는 서비스(Service) 계층을 명시.

  @Repository
역할: 데이터베이스에 접근하는 데이터 접근(Persistence) 계층을 명시.
* Spring이 제공하는 예외 변환 기능을 자동 적용.

💡 Configuration과 Bean
  * @Configuration: 해당 클래스가 설정 파일임을 명시.   * @Bean: 해당 메소드가 반환하는 객체를 IoC 컨테이너에 Bean으로 등록하도록 지시. 주로 외부 라이브러리 객체를 등록할 때 사용.

Ⅲ. Spring Boot란?

💡 Spring Boot?
스프링 프레임워크를 더 쉽고 빠르게 사용하도록 돕는 도구. 복잡한 초기 설정을 최소화.

Spring Boot 핵심 특징

  Auto-configuration: 의존성 기반으로 설정을 자동 구성.
Embedded Server: Tomcat 등 웹 서버 내장, 별도 설치 불필요.
Standalone: 실행 가능한 JAR 파일 하나로 간편하게 패키징 및 배포.
Opinionated: spring-boot-starter로 버전 충돌 없이 의존성을 자동 관리.


Ⅳ. 핵심 디자인 패턴

1. MVC 패턴 (Model - View - Controller)

소프트웨어를 Model, View, Controller 세 역할로 분리하는 아키텍처.

  Model: 데이터와 비즈니스 로직 담당. DB와 상호작용.
View: 사용자 UI 화면 담당.
* Controller: 사용자 요청 처리, Model과 View 연결.

2. 싱글톤 패턴 (Singleton Pattern)

최초 한 번만 객체를 생성하고, 이후 모든 곳에서 해당 객체를 공유하여 사용.

  * 스프링 컨테이너는 내부 객체(Bean)를 기본적으로 싱글톤으로 관리. 메모리 효율성 증대.


Ⅴ. REST API 개발

Spring Boot는 REST API 개발에 최적화. REST는 웹에서 자원을 주고받는 규칙.

  * 무상태성 (Stateless): 서버가 클라이언트의 상태를 저장하지 않음. 각 요청을 독립적으로 처리하여 확장성 확보.

HTTP 요청 메서드 (CRUD 기반)

어노테이션                                      주요 용도                  
@GetMapping데이터 조회 (Read)
@PostMapping데이터 생성 (Create)
@PutMapping / @PatchMapping데이터 수정 (Update)
@DeleteMapping데이터 삭제 (Delete)

Ⅵ. REST API 전역 예외 처리

애플리케이션의 여러 컨트롤러에서 발생하는 예외를 한 곳에서 효율적으로 처리하는 방법.

  * 필요성: 중복된 예외 처리 코드를 줄이고, 일관된 형식의 에러 응답을 클라이언트에게 전달하기 위함.

  @RestControllerAdvice 또는 @ControllerAdvice
역할: 모든 컨트롤러에 걸쳐 전역적으로 적용되는 예외 처리 클래스를 정의.

  @ExceptionHandler(Exception.class)
역할: @RestControllerAdvice 클래스 내에서 특정 예외가 발생했을 때 실행될 메소드를 지정.
* Exception.class 부분에 처리하고자 하는 특정 예외 클래스(e.g., IllegalArgumentException.class)를 명시.


Ⅶ. 주요 라이브러리 (Dependencies)

  Spring Web: 웹 개발 핵심. MVC, RESTful API 기능 제공.
Lombok: @Getter, @Builder 등 반복적인 코드 자동 생성.
Spring Security: 인증(Authentication)과 인가(Authorization) 담당.
JPA / MyBatis: 데이터베이스 연동 기술.
* JUnit: 단위 테스트 프레임워크.

0개의 댓글