Spring & Spring Boot

왜 Spring Framework를 선택할까?

김먼저 2022. 6. 2. 01:32

 

1. Framework란?

 

 - 프로젝트를 진행하는데 필요한 코드들을 구조화해서 기본으로 가지고 있는 프로젝트.

 - 목적에 따라 효율적으로 구조를 짜놓은 개발 방식.

....등등 많은 설명이 있지만 위 두 가지로 이해할 수 있습니다.

 

 

2.  Spring Framework란?

 

 - 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 합니다.

동적인 웹 개발을 하기 위한 여러가지 기능을 제공하고 있습니다. JAVA개발에 있어서 대표적인 프레임워크로 자리잡고

있으며 전자정부 표준프레임워크의 기반이 되는 기술이기 때문에 스프링 프레임워크의 활용도는 더욱 높아지고 있습니다.

 

 

3. Spring Framework의 특징

 

경량 컨테이너로서 자바 객체를 직접 관리한다.
각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
스프링은 Plain Old Java Object 방식의 프레임워크이다.
스프링은 내부적으로 별도의 API를 사용하지 않고, 일반적인 Java코드를 이용하여 객체를 구성하는 방식 그대로 사용하고 있습니다. 이것은 코드를 개발할 때, '개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않다' 라는 것을 의미합니다.
스프링은 제어 반전(IoC : Inversion of Control)을 지원한다.
컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
스프링은 의존성 주입(DI : Dependency Injection)을 지원한다.
스프링에서는 'ApplicationContext'라는 존재가 필요한 객체들을 생성하고, 필요한 객체들을 주입하는 역할을 해 주는 구조입니다. 따라서 스프링을 사용하면 객체와 객체를 분리해서 생성하고, 이런 객체들을 엮는 작업(Wiring)을 하게 됩니다. ApplicationContext가 관리하는 객체들을 Bean이라고 칭하고, 빈과 빈 사이의 의존 관계를 처리하는 방식으로 XML, Annotation, Java 등 다양한 방식이 사용됩니다.
스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원한다.
따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
스프링은 영속성과 관련된 다양한 서비스를 지원한다.
iBATIS나 하이버네이트 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
스프링은 확장성이 높다.
스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도
용이하다.

 

 

4. Spring Framework의 장단점

 

 장점

  • 프레임워크이기 때문에 개발자의 수준과 실력에 상관없이 일정 수준의 품질을 기대할 수 있습니다.
  • 담당자 혹은 개발자가 도중에 바뀌더라도 유지보수에 관한 리스크를 줄일 수 있습니다.

 단점

  • 많은 기능을 제공 및 탑재하고 있으므로 그만큼 무겁습니다.
  • 마찬가지로 기능을 익히기 위해 많은 노력과 시간이 필요합니다.

 

 

 

 

틀린 부분이 있거나 더 이해하기 쉬운 표현이 있다면 댓글 부탁드립니다:)