스프링이란?

코코·2020년 8월 20일
1

Spring

목록 보기
1/15
post-thumbnail
post-custom-banner

스프링이라는 프레임 워크

image 🌍Wikipedia

프레임워크의 사전적 의미는 뼈대, 근간이다.

이까짓 뼈대가 왜 필요하나?

a,b,c, ...z가 함께 일하는데 모두가 다른 방식으로 일한다면 어떨까? 뭐 그럭저럭 흘러는 가겠지만... 지금은 상상할 수 없는 어떤 무시무시한 일들이 벌어질지도 모르겠다. a와 w가 밤새 개발한 다음, 이제 우리 코드를 합쳐 보자! 했을 때, a의 방식과 w의 방식이 전혀 달라서 대략난감한 경우 말이다. 흠. 이렇게 하자고 했잖아! 난 이게 더 좋단 말이야!

이런이런.

프레임워크는 독재차처럼 흐름을 제어한다. 개발자는 프레임워크가 제어하는 흐름을 따라 개발할 수밖에 없다. 위에서 예로든 a부터 z로 이루어진 알파벳 팀 모두가 Spring을 쓴다고 해보자. 그럼 a와 w는 자신만의 방식 대로 개발할 수 없다. 오로지 Spring이 제어하는 흐름 위에서 자신의 코드를 추가할 것이다. 그렇다면 위와 같은 일은 일어나지 않겠지.

그러니까 이제부터는 직접 구조를 짤 필요가 없이, 스프링이 만들어놓은 구조 위에 살을 붙이고 색을 칠하기만 하면 된다.

특징

  • POJO기반 구성

    • 스프링은 내부적으로 객체 간의 관계를 구성할 수 있는 특징을 가지고 있다. 이때 별도의 API를 사용하지 않고 일반적인 자바 코드만으로 객체를 구성할 수 있다. 이런 구성을 Plain Old Java Object(POJO)구성이라고 한다. 이렇게 했을 때, 어떤 기술에 종속적이지 않으므로 만들기 편하고, 고치기도 쉽고, 테스트하기도 좋다.
  • 의존성 주입Dependency Injection(DI)

    • 의존성은 하나의 객체가 다른 객체 없이 자신의 역할을 할 수 없다는 것을 말한다.
      주입은, 밀어넣는 것이다. 이 두개를 합치면 의존성 주입이다. 어떤 객체가 필요로 하는 객체를 찾아서 밀어넣는 것이다.

    • 왜?
      편하기 때문이다. 주입 받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없다. 어떤 객체에 의존하든, 역할은 변하지 않는다.
      누가 주입해주는가? Application Context다. Application Context는 일종의 컨테이너다. 늘 대기하면서 빈을 관리한다. 그리고 누군가 빈을 요청하면, 해당 빈을 찾아서 주입한다.

      • Application Context가 관리하는 객체를 빈Bean이라고 부른다.
  • AOP(Aspect-Oriented-Programming)

    • 개발할 때 핵심 비즈니스 로직에만 집중할 수 있게 돕는 기능이다. 시스템이 공통으로 가지고 있는 반복적인 코드가 있다. 핵심 로직은 아니지만, 반드시 처리해야만 하는 귀찮은 것들. 이것을 스프링에서는 횡단 관심사(cross-concern)라고 한다. AOP는 횡단 관심사를 모듈로 분리하는 프로그래밍 패러다임이다.

    • 장점

      • 개발자는 비즈니스 로직에만 집중할 수 있다.
      • 프로젝트마다 다른 관심사를 적용할 때, 코드 수정을 최소화 할 수 있다.
      • 원하는 관심사의 유지보수가 수월한 코드를 구성할 수 있다.
  • MVC구조

  • WAS에 종속적이지 않음

  • 트랜잭션

    • 트랜젹선 관리를 어노테이션이나 XML설정만으로 끝낼 수 있다.

이 시리즈는 🔎 코드로 배우는 스프링 웹 프로젝트를 참고했습니다.

post-custom-banner

1개의 댓글

잘 보고 갑니다 !

답글 달기