그래서 Spring이 뭔데?

Asha·2022년 5월 24일
0

[개발자 지식]

목록 보기
4/4
post-thumbnail

Spring..

내가 Spring을 쓰고 있는 것 같긴 한데.. 누가 Spring이 뭐냐고 묻는다면 명쾌한 답변을 하기가 힘들다..
"어...자바를 이용해서...그 프레임워크를 제공하는...아 ! 가이드라인..?"
안타깝게도 나를 위해서 작성한다..

Spring Framework

자바 플랫폼을 위한 오픈 소스 기반의 어플리케이션 프레임워크이다.
라이브러리와 헷갈릴 수 있는데 차이점은 프레임워크는 제어의 흐름까지 가져간다는 점이다.
(즉 어느정도 기본틀 내에서 개발이 가능하다, ex) MVC pattern)
동적인 웹 사이트를 개발하기 위한 서비스이다.

더 모르겠는데 ?

Spring 자체를 정의하기 보다는 Spring을 기반으로 만들게 되면 어떠어떠한 특징을 갖게 된다 식의 접근이
나에겐 더 쉬웠던 것 같다.

IOC (제어 역행)

Inversion of Control = 제어의 역전

아까전의 라이브러리와의 차이점으로 제어의 흐름을 프레임워크가 가져간다고 언급하였다.
가져가서 무엇을 목적으로 하냐면 "느슨한 결합" 이다.
기존 프로그램은 객체 결정 및 생성 -> 의존성 객체 생성 -> 객체 내의 메소드 호출의 반복이라면
IOC는 흐름의 구조가 다르다.

개발자가 사용할 객체를 직접 생성하지 않고 스프링 컨테이너에 맡긴다. 스프링 컨테이너에 저장된 객체를 꺼내서 쓰는 형식으로 바뀌게 된다.

즉, 개발자의 권한을 다른 대상에 위임하여 제어 권한을 위임 받은 객체에 의해 결정된다.

IOC란 기존 사용자가 모든 작업을 제어하던 것을 위임하여 객체의 생성부터 생명주기 등 모든 객체에 대한 제어권이 넘어간 것을 뜻한다.

DI / DL (IOC의 구성요소)

  • DL(Dependency LookUp) : 의존성 검색
    컨테이너에서는 객체들을 관리하기 위해 별도의 저장소에 빈을 저장한다.
    개발자들이 컨테이너에서 제공하고 있는 API를 이용하여 사용하고자 하는 빈을 검색하는 방식이다.

  • DI(Dependency Injection) : 의존성 주입
    의존성 주입이란 객체가 서로 의존하는 관계가 되게 의존성을 주입하는 것이다.
    객체 지향 프로그래밍에서 의존성이란 하나의 객체가 어떠한 다른 객체를 사용하고 있음을 의미한다.
    각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.

즉 Spring을 이용하면 클래스 사이에 필요로 하는 의존 관계를 설정을 통해 컨테이너가 자동으로 연결해 주는 것이다.

AOP(Aspect Oriented Programming) : 관점 지향 프로그래밍

대부분 소프트웨어 개발 프로세스에서 사용하는 방법은 OOP(객체지향)원칙을 따르는데 낮은 결합도를 갖게해서 독립적이고 유연한 모듈로 캡슐화를 하는 것을 말한다.

OOP를 해서 낮은 결합도로 설계를 함에도 로깅, 트랜잭션 처리, 보안 관련 로직등에서 중복된 코드들이 발생하게 된다.
이 중복되는 코드들이 많아지면 가독성, 확장성, 유지보수성을 떨어트려 이 문제를 보완하기 위해 AOP가 등장하였다.

AOP에서는 핵심기능과 공통기능을 분리 시켜 핵심 로직에 영향을 끼치지 않게 공통기능을 끼워넣는 개발 형태이다.

중복되는 코드를 제거할 수 있고 공통기능을 한 곳에 보관함으로써 공통 기능 하나의 수정으로 모든 핵심기능들의 공통기능을 수정할 수 있어 효율적인 유지보수가 가능하며 재활용성이 높아지는 장점이 있다.

profile
열심히 살 수 있을 때 열심히 살자 !

0개의 댓글