[Spring] Spring Framework 란?

HM·2023년 8월 4일
0

끝없는 개발지식

목록 보기
1/5
post-thumbnail

JAVA 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로 간단히 스프링(Spring)이라고도 함. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 특히, 우리나라에서는 전자정부 표준프레임워크로써 많은 시장 점유율을 가지고 있는 프레임워크이다.
출처 : '스프링 프레임워크' 위키백과

프레임워크 vs 라이브러리

프레임워크 🚙

프레임워크는 뼈대 또는 기반 구조를 뜻하고, 제어의 역전 개념이 적용된 대표적인 기술이다. 소프트웨어에서 프레임워크는 소프트웨어의 특정 문제를 해결하기 위해 상호 협력하는 클래스와 인터페이스의 집합이라고 할 수 있다. 또한 완성된 애플리케이션이 아닌 프로그래머가 완성시키는 작업을 수행한다.

라이브러리 ⚒️

라이브러리는 단순 활용가능한 도구들의 집합을 말한다. 즉, 개발자가 만든 클래스에서 호출해 사용, 클래스들의 나열로 필요한 클래스를 불러서 사용하는 방식이라고 말할 수 있다.

프레임워크와 라이브러리의 차이

프레임워크와 라이브러리의 차이

이 둘의 차이는 애플리케이션의 제어 흐름을 누가 쥐고 있느냐에 따라 갈린다. 프레임워크는 전체적인 흐름을 가지고 있으며, 개발자는 그 안에서 필요한 코드를 구현하면 되는 것이다. 반면 라이브러리는 개발자가 전체적인 흐름을 만들며, 만든 라이브러리를 가져다 쓰는 것이라고 할 수 있다.
다시 말해, 프레임워크는 그 틀안에 제어 흐름에 대한 주도성이 이미 내제되어 있는 것이고, 라이브러리는 라이브러리를 가져가서 호출하고 사용하는 측에 주도성이 있는 것이다.


Spring Framework 🍃

특징

스프링의 대표적 특징 : IoC/DI, PSA, AOP, POJO

  1. 경량 컨테이너
  • 스프링 컨테이너는 자바 객체를 직접 관리해 각각의 객체 속성, 소멸과 같은 라이프 사이클을 관리하며, 스프링 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다.
  1. POJO (Plain Old Java Object) 기반의 구성
  • POJO는 말 그대로 우리가 자바에서 개발하는 지극히 평범한 객체를 뜻한다.
  • 하지만, POJO는 특정 규약과 특정 환경에 종속되어서는 안되고 객체지향 설계를 잘 지켜야한다는 조건이 존재한다.
  1. 제어의 역행 (IoC, Inversion of Control)
  • 스프링은 그 자체로 구조를 설계할 수 있어서 개발자가 부품을 만들어 조립하는 형태의 개발이 가능하다.
  • 이렇게 조립된 코드의 최종 호출은 개발자가 결정하는 것이 아니라 스프링 프레임워크 내부에서 이루어지는데, 이것을 제어의 역행(IoC, Inversion of Control)라고 한다.
  1. 의존성 주입 (DI, Dependency Injection)
  • 의존성 주입(DI)은 특정 객체가 필요로 하는 객체를 외부에서 결정해 연결시키는 것을 말한다.
  • 또한, DI는 제어의 역행이 일어나는 것을 전제로 스프링 내부의 객체들간의 관계를 만들어줄 때 사용한다.
  • 스프링에서는 설정파일(XML, YAML, PROPERTIES 등)이나 어노테이션(@)을 통해 의존 관계를 설정할 수 있다.
  1. AOP (Aspect Oriented Programming) 지원
  • AOP는 관점 지향 프로그래밍(관심사의 분리)을 뜻한다. 대부분의 시스템에서 비즈니스 로직은 아니지만, 보안 / 로그 / 트랜잭션과 같이 반드시 처리가 필요한 부분을 횡단 관심사라고 한다.
  • 스프링에서는 이런 관심사를 비즈니스 로직과 분리, 중복된 코드를 줄이고 개발자가 비즈니스 로직에 집중하도록 만들어 준다.
  • 여기서 비즈니스 로직은 핵심 관심사항으로 분리된다.
  1. PSA (Portable Service Abstraction)
  • PSA란 환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하는 추상화 구조를 말한다.
  • 자바에서 추상클래스, 인터페이스 등을 통해 객체를 추상화해 다양한 객체를 한 클래스로 묶어 사용하는 것처럼 말이다.
  • 생성된 객체에서 추상 클래스를 참조, 하위 클래스의 기능을 사용할 수 있다. (느슨한 결합)
profile
나만의 공부방 📖

0개의 댓글