TIL

Spring이란?

마라탕천재 ㅣ 2024. 6. 4. 17:42

1. Spring 이란?

스프링은 자바 엔터프라이즈 개발에 사용되는 프레임워크이다. 프레임워크는 어플리케이션 개발을 효율적으로 할 수 있도록 어플리케이션의 바탕이 되는 틀과 모델, API 등을 제공한다.

 

2. Spring의 특징

  • IoC(Inversion of Control) & DI(Dependency Injection) : IoC는 객체의 생명주기와 의존성 관리를 프레임워크에 위임하여 개발자가 비즈니스 로직에만 집중할 수 있게 한다. DI는 IoC의 한 형태로서, 객체 간의 의존성을 외부에서 주입해 결합도를 낮추고 유연성과 재사용성을 높인다.
  • AOP(Aspect-Oriented Programming) : 로깅, 보안, 트랜잭션 관리 같은 공통 관심사를 분리하여 모듈화할 수 있게 해준다. 이를 통해 코드의 중복을 줄이고 핵심 비즈니스 로직에서 이러한 부가 기능을 분리함으로써 코드의 가독성과 유지보수성을 크게 향상시킨다.
  • MVC 패턴 : SpringMVC는 웹 애플리케이션 개발을 위한 모델-뷰-컨트롤러 패턴을 제공한다. 이를 통해 웹 어플리케이션의 각 부분을 명확히 분리하여 개발할 수  있으며, 코드 구조화와 테스트 용이성이 크게 향상된다.

 

3. Spring의 장점

  • 의존성 주입(DI) : 객체 간의 결합도를 낮추어 코드의 재사용성과 유지보수성을 크게 향상시킨다.
  • 관점지향 프로그래밍(AOP) : 핵심 로직과 부가 기능을 분리하여 코드의 모듈화와 가독성을 높인다. 

 

4. Spring의 단점

  • 복잡성 : 많은 추상화 계층과 설정 옵션으로 인해 대규모 프로젝트에서 복잡해질 수 있다.
  • 무거운 프레임워크 : 필요 이상의 기능을 포함하여 메모리 사용량이 크고 시작 시간이 느릴 수 있다.

 

5. Spring과 Spring boot의 차이

스프링과 스프링부트의 가장 큰 차이점은 설정의 간소화이다. 스프링은 많은 수동 설정이 필요한 반면, 스프링부트는 '약속보다 설정' 원칙을 따라 대부분을 자동으로 구성한다.