스프링
JAVA의 웹 프레임워크이다.
Java 언어를 기반으로 사용한다.
Java로 다양한 어플리케이ㅐ션을 만들기 위한 프로그래밍 틀이다.
Java의 활용도가 높아지면서 JSP, MyBatis, JPA등의 기술이 생겨났다.
Spring은 앞서 말한 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임워크이다.
프레임워크(FrameWork)
어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조이며, 개발에 있어 하나의 뼈대 역할을 한다.
애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 커넥션 등의 기능들을 위해 뼈대를 제공한다.
구체적인 설계와 구현을 재사용이 가능하게끔 상호 협력하는 클래스와 인터페이스의 집합이다.
라이브러리(Library)
라이브러리는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말, 메시지 틀, 미리 작성된 코드, 함수, 클래스, 값, 자료형 사양 등을 포함할 수 있다.
개발에 필요한 것들을 미리 구현해 놓고 필요한 곳에서 호출하여 사용 가능하도록 만들어진 집합이다.
프레임워크 vs 라이브러리
가장 큰 차이점은 제어 흐름이다.
프레임워크는 제어의 역전(IoC : Inversion of Control)이 적용된다. 프레임워크에게 제어의 흐름을 넘겨 개발자가 작성하는 코드에서 신경 써야 할 부분을 줄일 수 있다.
프레임워크는 전체적인 흐름을 쥐고 있으며 애플리케이션 코드는 프레임워크에 의해 사용된다.
애플리케이션 코드는 프레임워크가 짜놓은 틀 안에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크에 있다.
라이브러리는 개발자가 전체적인 흐름을 만들며 라이브러리를 직접 가져다 쓴다.
라이브러리는 개발자에게 전적으로 제어 흐름이 있어 필요할 때마다 능동적으로 라이브러리를 호출하여 사용한다.
제어의 역전(IoC : Inversion of Control)
개발자가 작성한 객체나 메서드의 생명주기의 제어를 개발자가 아니라 외부에 위임하는 설계원칙
객체의 생성, 설정, 초기화, 메서드 호출 및 소멸 등의 객체의 생명주기를 프로그래머가 아닌 프레임워크에게 위임할 수 있다. 즉 외부 라이브러리가 프로그래머가 작성한 코드를 호출하고, 흐름을 제어한다.
의존성 주입(DI : Dependency Injection)
IoC를 실현하기 위한 여러 디자인 패턴 중 하나로 객체간 결합을 느슨하게 만들어 유연하고 확장성이 뛰어난 코드를 작성하기 위한 패턴이다.
프로그램에서 구성 요소의 의존 관계가 소스코드 내부가 아닌 외부의 설정 파일을 통해 정의되는 방식이다.
코드 간의 재사용성을 높이고, 소스코드를 다양한 곳에서 사용하며 모듈 간의 결합도를 낮출 수 있다.
스프링의 특징
1. IoC(Inversion of Control)
2. DI(Dependency Injection)
3. POJO(plain Old Java Object) : Getter, Setter로 구성된 가장 순수한 형태의 기본 클래스
- 스프링 프레임워크는 일반적인 자바 코드를 이용하여 개발이 가능하다.
4. AOP(Aspect Oriented Programming / 관점 지향 프로그래밍)
- 반복적인 코드를 줄이고 개발자가 비즈니스 로직에만 집중할 수 있도록 지원한다.
POJO, AOP에 대한 이해가 필요하여 따로 포스팅하여 다루도록 하겠다. 포스팅이 완료되면 링크 남겨둘 예정
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!