본문 바로가기
Archive/Java 풀스택 아카데미

[TIL] 12. 9월 Spring Framework

by Lseing 2025. 9. 30.

 

자바 백엔드 프레임워크인 스프링에 대해 잘 정리해보자

🟢스프링 프레임워크란?

Spring은 자바플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로, 복잡한 엔터프라이즈(enterprise)급 애플리케이션 개발을 더 쉽고 효율적으로 만들어준다

자바 애플리케이션 개발을 위한 포괄적인 인프라 지원을 제공한다.

스프링에서 인프라를 처리하므로 개발자는 애플리케이션 개발에만 집중할 수 있다.

여기서 엔터프라이즈 애플리케이션이란 조직의 복잡한 운영 프로세스를 자동화하고
효율성을 높이기 위해 설계된 대규모 소프트웨어 솔루션을 뜻한다.

👍스프링의 3가지 핵심 장점

1.  생산성 우수

  • 스프링은 엔터프라이즈 애플리케이션 구축을 위한 솔루션이지만 가볍고 모듈화가 되어 있어서 필요한 부분만 사용이 가능하다.
  • POJO 클래스와 약간의 설정만으로도 개발이 가능하다.
  • 스프링을 적용하면 그렇지 않은 코드의 3분의 1 정도의 코드만으로 개발이 가능하다.

2. 품질 보증

  • 스프링은 이미 검증된 아키텍처와 디자인 패턴이 적용됨
  • 개발자가 직접 패턴 구현할 필요 없음
  • 일관성 있는 코드 작성 가능

3.  유지보수 용이

  • 모듈화된 구조
  • 인력과 시간 절감
  • 위의 이유로 업계 표준으로 자리 잡음

전통적 개발 vs 스프링 개발 비교

구분 전통적 방식 ❌ 스프링 방식 ✅
객체 관리 개발자가 직접 new 생성 스프링이 자동 관리
코드량 많음 약 1/3 수준
결합도 강한 결합 느슨한 결합
테스트 어려움 용이함
유지보수 복잡함 간단함

 


🟢POJO (Plain Old Java Object)란?

  • 오래된 방식의 간단한 자바 객체, 자바로 생성하는 순수한 객체로 어떠한 제약에 묶이지 않은 자바 객체를 말한다.
  • 특정 환경과 규약에 종속되지 않아 필요에 따라 재사용될 수 있는 방식으로 설계된 객체
  • 다른 클래스를 상속받거나 인터페이스를 구현해야하는 규칙이 없는 자바 클래스

코드 예시:

대표적으로 생성자와 getter/setter만 지닌 단순한 자바 객체이다 + DTO/VO

 

POJO의 장점:

  • 테스트가 쉬움: 특정 환경없이도 독립적으로 테스트 가능
  • 재사용성 높음: 어떤 기술에도 얽매이지 않아 어디서든 재사용 가능
  • 유연한 설계 가능
  • 코드가 간결하고 읽기 쉬움

✅스프링의 3대 핵심 기능

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

스프링의 핵심 기술인 DI는 객체 간의 의존 관계를 외부에서 설정하여 객체간의 결합도를 낮춘다.

카페에서 커피를 마신다고 생각해보자.

DI 가 없다면 본인이 직접 커피를 제조하는것과 같다. 커피의 제조부터 직접해야한다. 그러나 DI를 사용한다면 흔히 카페에서 커피를 주문하는 것과 같다. 바리스타가 만든 커피를 받아서 마시기만 하면 된다. 이 과정에서 우리는 어떻게 커피를 만드는지 몰라도 된다.

코드 예시:

2. IoC (Inversion of Control) - 제어의 역전

제어의 역전(IoC)은 '제어 흐름'의 주체가 바뀌는 개념으로, 스프링의 가장 핵심적인 원리이다.

  • 기존 방식: 개발자가 코드 안에서 new 키워드를 사용해 객체를 직접 생성하고, 객체 간의 관계를 맺어주는 등 모든 제어의 주체는 개발자였다.
  • 스프링 방식: 객체의 생성부터 생명주기 관리, 의존관계 설정까지 모든 제어권이 스프링 컨테이너(Spring Container)에게 위임된다. 개발자는 그저 필요한 객체를 선언하고 가져다 쓰기만 하면 된다.

이처럼 객체 관리의 주도권이 개발자에서 스프링으로 넘어갔기 때문에 '제어의 역전'이라 부른다. 스프링 컨테이너는 객체(스프링에서는 Bean이라 부름)를 보관하고 관리하며, 필요할 때마다 개발자에게 제공해주는 역할을 한다.

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

여러객체에 공통적으로 적용되는 기능들을 하나의 관점으로 묶어 분리하는 프로그래밍 기법이다.

  • 핵심 비즈니스 로직: 상품 주문, 결제 등 해당 서비스의 핵심 기능
  • 공통 부가 기능 (관점): 로깅, 트랜잭션 관리, 보안(권한 체크), 성능 측정 등

AOP를 사용하면 여러 메서드에 흩어져 있던 반복적인 코드들을 한 곳으로 모아 관리할 수 있다.

  • 코드 중복 제거: 공통 기능을 한 곳에서 관리하므로 반복적인 코드가 사라진다.
  • 유지보수 용이성: 공통 기능에 수정이 필요할 때, 한 곳만 수정하면 모든 곳에 적용된다.
  • 핵심 로직 집중: 개발자는 비즈니스 로직에만 집중할 수 있어 코드의 가독성과 생산성이 향상된다.
  • AOP의 장점
  • 관점 지향 프로그래밍(AOP)은 여러 객체에 공통적으로 나타나는 기능(부가 기능)을 하나의 관점으로 묶어 분리하고, 필요할 때 원하는 곳에 동적으로 적용하는 프로그래밍 기법이다.