[spring] - 1. What is Spring?

이창희·2022년 7월 7일
2

spring

목록 보기
1/2
post-thumbnail

서버 개발자, 백앤드 개발자 채용공고에 대부분이 기본사항으로 들어가는 것 중 하나가 스프링관련 내용이 없는데가 거의 없다. 대체 스프링이 뭐길래 그러는가?

1. 스프링이란?


스프링을 알기전에 우선 프레임워크가 무엇인지 알고 가야한다.

1.1 프레임워크

  • 한마디로 '뼈대'라고 생각하면된다.

  • 어플리케이션을 개발할 때, 아키텍쳐에 해당하는 골격 코드를 제공한다.

  • 예를들어서 옷을 입히는 마네킹이 전부 제각각이면 사이즈가 제각각이여서 옆에 키 큰 마네킹에 옷을 키 작은 마네킹에게 옮겨서 입힐 수 가없다. 하지만 같은 마네킹이라면 사이즈에 구애받지 않고 입힐 수 있는 것과 같은 원리이다.

    프레임 워크의 장점

    1. 빠른 구현시간

    뼈대가 주어지므로 개발자는 오로지 비즈니스 로직에만 집중할 수있기 때문에 빠른 구현이 가능해진다.

    2. 쉬운 관리

    같은 프레임워크가 적용된 애플리케이션들은 뼈대가 같으므로 관리하기가 쉽다.

    3. 개발자들의 역량 획일화

    시니어 개발자들과 주니어 개발자들의 코드가 비슷해진다. 프레임워크가 이를 도와주기 때문이다.

    4. 검증된 아키텍처의 재사용과 일관성 유지

    뼈대가 이미 검증된 것이 주어져있기 때문에 이를 통해 개발하면 별다른 고민이나 검증 없이 소프트웨어를 개발할 수 있다.


1.2 스프링의 탄생배경

스프링 프레임워크가 탄생하기전 자바 기반의 엔터프라이즈 애플리케이션은 대부분 EJB로 개발되었는데 EJB기술은 다음과 같은 여러가지 문제점이 있었다.

  • 학습에 많은 시간이 필요하다.
  • 개발 및 유지보수가 복잡하고 힘들다.
  • WAS가 필요한데 그와 관련된 장비들이 너무 비싸다.

그래서 로드존슨이라는 영롱한 분이 2004년에 이러한 문제점을 해결한 스프링이라는 오픈소스 프레임워크를 내놓으신것이다!!!

왜 Spring이란 이름으로 지었는가?🌞

나는 이게 궁금했는데 이유가 굉장히 서정적이였습니다.

Spring은 개발자가 아닌이상 이먼저 떠오르는데 로드존슨은 스프링 프레임워크가 없던 시대를 추운 겨울이라고 보았습니다.
EJB 환경에서 개발자들이 처리해야할 일들이 수도없이 많았다는 거죠 그래서 이 프레임워크를 사용하는 시대부터는 따뜻한 봄이온다라는 뜻으로 지었다고 합니다.


1.3 스프링의 특징

1. 경량

우선 스프링은 여러 개의 모듈로 구성되 있으며, 각 모듈은 하나이상의 JAR 팡일로 구성되어 있습니다. 그리고 이 몇 개의 JAR 파일만 있으면 개발과 실행이 모두 가능합니다. 따라서 스프링을 이요해서 만든 애플리케이션의 배포 역시 매우 빠르고 쉽습니다.

2. 제어의 역행 (IOC)

가장 핵심이 되는 특징중 하나라고 생각하는데 우선 비즈니스 컴포넌트를 개발할 때, 항상 신경써야 하는 부분이 낮은 결합도와 높은 응집도 입니다. 스프링은 IOC를 통해 객체 간의 느슨한 결합과 낮은 결합도를 유지합니다.

3. 관점지향 프로그래밍(AOP)

이 특징 또한 핵심이 되는 특징입니다. 비즈니스 로직을 구현하다 보면 공통적으로 들어가는 부분을 여기저기에 똑같이 넣고 있는 나의 모습을 볼 수 있습니다. 이를 하나의 로직으로 분리해서 필요한 부분만 사용하게 하는 것이 AOP입니다.
AOP를 사용하면 응집도는 높아지고 유지보수 또한 혁신적으로 향상 시킬 수 있습니다.

4. 스프링 컨테이너

컨테이너는 특정 객체의 생성과 관리를 담당하며 객체 운용에 필요한 다양한 기능을 제공합니다.
다음은 스프링 컨테이너의 특징입니다.

  • 내부적으로 객체들의 저장공간으로 컬렉션(Map 같은)을 사용한다.
  • 스프링 컨테이너(GenericXMLApplicationContext)는 XML에 등록된 객체를 프리로딩 한다.
  • 스프링 컨테이너는 객체를 생성할 때 기본 생성자만 호출한다.
  • 스프링 컨테이너는 XML에 등록된 순서대로 객체를 생성한다.
  • 하나의 객체만 생성가능하다. (prototype 제외)

마치며

제가 가지고 있는 스프링에 지식을 간단하게 정리해보았습니다. 다음시간에는 IOC에 대해서 정리해 보겠습니다.

읽어 주셔서 감사합니다!!!


Reference

  • 스프링 퀵 스타트 - 채규태
profile
백앤드 개발자를 꿈꾸는 개발자 지망생입니다.

0개의 댓글