[Spring] 스프링 프레임워크

U-Vin Lee·2022년 1월 3일
1

Study-Spring

목록 보기
1/3

<프레임 워크의 개요>

  • 프레임워크의 사전적 의미는 뼈대 혹은 골조로서 애플리케이션을 개발할 때 아키텍처에 해당하는 골격 코드를 제공한다.

  • '반제품'이라고 부르기도 한다.
    즉 완전한 기능이 제공되는 Solution과는 달리 소프트웨어의 아키텍처에 해당하는 절반의 코드를 프레임워크에서 제공하고 나머지 기능에 따라 달라지는 로직을 개발자가 구현한다.

  • 프레임워크 코어(Cold Spot) : 변경되지 않고 반복적으로 재사용 되는 부분이다. 프레임워크에서 제공하는 라이브러리들을 의미하고, 사용하는 자원 관리나 처리 흐름을 제어한다.

  • 확장 포인트(Hook Point) : 애플리케이션을 구축할 때 사용할 확장 포인트를 제공한다. 추상 클래스나 인터페이스 형태로 제공되는 것이 일반적이다.

  • 확장 모듈(Hot Spot) : 각 애플리케이션이 확장 포인트를 상속해서 애플리케이션만의 비즈니스를 구현하는 것을 말한다.

  • 메타데이터 : 프레임워크에서 제공하는 Cold Spot과 Hook Point를 상속해서 구현한 Hot Spot을 유기적으로 결합하여 동작하도록 하는 환경 설정 파일이다. 일반적으로 XML, java Annotation 형태로 작성한다.

<프레임워크의 장점>

  • 빠른 구현 시간
  • 관리의 용의성 증가
  • 개발자들의 역량 획일화
  • 검증된 아키텍처의 재사용과 일관성 유지

1. 빠른 구현 시간

애플리케이션 구현 시 프레임워크를 사용하면 프레임워크에서 제공하는 기반 구조를 그대로 사용하여 애플리케이션만의 비즈니스 로직과 관련된 부분만을 구현하면 되기 때문에 더욱 빠르게 만들 수 있다.

2. 관리의 용의성 증가

같은 프레임워크가 사용된 애플리케이션들은 서로 비슷한 구조를 가지게 되어 관리가 쉬워지므로 결과적으로 유지보수에 들어가는 인력과 시간도 단축된다.

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

숙련된 개발자와 비숙련된 개발자가 생성한 코드가 비슷해진다. 이는 숙련되지 않은 초급 개발자도 프레임워크의 도움을 통해서 세련되고 효율적인 코드를 생성해 낼 수 있다.

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

프레임워크에서 제공하는 검증된 아키텍처를 사용해야 하기 때문에 아키텍처에 대한 별다른 고민 없이 소프트웨어를 개발할 수 있다.
또한, 이렇게 개발된 시스템은 시간이 지나도 유지 보수 과정에서 아키텍처가 틀어지거나 변형되는 현상이 줄어든다.


<스프링 프레임 워크 구조>

스프링 프레임워크는 로드존슨(Road Johnson)이 만든 오픈 소스 프레임워크이다.

Spring은 평범한 POJO(Plain Old Java Object)를 사용하면서도 EJB(Enterprise Java Beans)에서만 가능했던 일들이 가능하도록 만들어준다.

  • POJO란 말 그대로 평범한 옛날 자바 객체를 의미한다.
    POJO를 좀 더 쉽게 이해하기 위해서 반대로 POJO가 아닌 클래스가 무엇인지 이해하면 된다.

    대표적인 NOT POJO 클래스로는 Servlet 클래스가 있다.
    Servelet 클래스는 사용자 마음대로 만들 수 없으며, 반드시 Servlet에서 요구하는 규칙에 맞게 클래스를 만들어야 실행할 수 있다.

<스프링 프레임워크의 특징>

  • 경량(Lightweight)
  • 제어 역행 (IOC- Inversion of Control)
  • 관점 지향(AOP – Aspect- Oriented Programming)
  • 컨테이너(Container)

1. 경량(Lightweight)
Spring은 그 크기와 부하의 측면에서 경량이다.
Spring 프레임워크는 몇 개의 JAR파일로 구성되므로 설치 및 사용이 매우 쉽다.
Spring 프레임워크관리하는 객체POJO이므로 특별한 클래스나 인터페이스를 상속할 필요가 없는 단순하고 가벼운 JAVA 객체이다.

2. 제어 역행 (IOC- Inversion of Control)
제어 역행이라는 기술을 통해 애플리케이션의 느슨한 결합을 도모한다.
'제어의 역행' 또는 '역제어'라고 하는데 제어 역행의 주체는 객체 생성에 대한 제어를 의미한다.
전통적인 객체지향 프로그래밍에서는 의존관계에 있는 객체 사이의 의존 관계를 직접구현.
IoC가 적용되면 객체는 의존하는 다른 객체를 생성하거나 찾는 대신, 수동적으로 의존성을 주입받는다. 이런 의미로 IoC'의존성 주입'이라고도 한다.

3. 관점 지향(AOP – Aspect- Oriented Programming)
관점지향 프로그래밍은 애플리케이션 비즈니스 로직을 시스템 서비스로부터 분리함으로써 응집된 개발을 가능하게 한다.
공통으로 사용하는 기능들을 모듈화하고 해당 기능을 프로그램 코드에서 직접 명시하지 않고 선언적으로 처리하여 필요한 컴포넌트에 계층적으로 다양한 기능들을 적용하는 것이다.

4. 컨테이너(Container)
컨테이너는 객체의 생성 및 관리를 담당하는 일종의 서버 개념이다.
애플리케이션 운용에 사용되는 객체의 생명 주기와 객체들 간의 의종 관계를 관리한다는 점에서 Spring도 일종의 컨테이너라고 할 수 있다.

profile
포기하지 않고 끝까지 노력하는, 초보 개발자입니다.

0개의 댓글