
스프링 (Spring) 🌱
스프링 프레임워크(Spring Framework)는 자바 플랫폼 개발을 위한 오픈소스 경량급 애플리케이션 프레임워크로 간단히 스프링이라고 불린다.
동적 웹 사이트 개발을 위해 여러 서비스를 제공하며, 대한민국 정부 표준 프레임워크 중 하나 이다.
프레임워크란, 어떠한 목적을 쉽게 달성 할 수 있도록 해당 목적과 관련된 코드의 뼈대를 미리 만들어둔 것을 의미
애플리케이션 프레임워크란, 애플리케이션을 개발하는 데에 있어 필요한 모든 업무 분야 및 모든 기술과 관련된 코드들의 뼈대를 제공
스프링은 엔터프라이즈용으로 Java 애플리케이션 개발을 도와준다.
스프링은 오픈소스 프레임워크로 개인 및 기업도 사용이 가능하며, 필요하다면 스프링의 코드를 일부 수정하여 사용 할 수 있다. 스프링은 스프링소스(SpringSource)기업에서 관리를 하고 있어 안정적인 개발과 개선이 보장된다.
기존 스프링 대신 사용하던 기술들과 비교하여, 스프링을 사용할 때 작성해야 할 코드가 상대적으로 단순하여 경량급 특징을 가지고 있다. 기존 기술을 사용할 때 불가피하게 작성해야만 했던 복잡한 코드를 제거하여 코드의 복잡성을 낮출 수 있다.
POJO 프로그래밍을 지향
POJO(Plain Old Java Object)란, 순수 Java만을 통해서 생성한 객체를 의미한다.
순수 Java만을 사용한다는 것은 Java 및 Java의 스펙에 정의된 기술만 사용한다는 의미이다.
즉, 다른 기술을 사용하지 않는 순수한 Java만을 사용하여 만든 객체인 것이다.
POJO는 외부 기술이나 규약의 변화에 얽매이지 않아 보다 유연하게 변화와 확장에 대처 가능하고,
객체지향 설계를 제한없이 적용할 수 있으며, 코드가 단순해져 테스트와 디버깅이 쉬워진다.
IoC / DI
IoC(Inersin Of Control)란, 개발자가 아닌 스프링이 객체를 사용하여 의존 관계를 맺어주는 것으로 제어의역전이라고 한다.
DI(Dependency Injection)란, IoC 과정에서 생성자를 통해 주입해주는 것으로 의존성 주입이라고 한다.
AOP(Aspect Oriented Programming, 관심 지향 프로그래밍)
애플리케이션을 개발할 때 구현해야 하는 기능들을 크게 공통 관심 사항과 핵심 관심 사항으로 분류 할 수 있다.
핵심 관심 사항은 애플리케이션의 핵심 기능과 관련된 관심 사항들을 의미하고, 공통 관심 사항은 모든 핵심 관심 사항에 공통적으로 적용되는 관심 사항들을 의미한다.
구현할 때 공통 관심 사항과 관련된 코드가 중복 될 수 밖에 없는데 해당 문제를 해결하기 위해서는 공통 관심 사항과 관련된 기능들을 별도의 개체로 분리해낸 다음, 분리해낸 객체의 메서드를 통해 공통 관심 사항을 구현한 코드를 실행시킬 수 있도록 해야한다. 이처럼, 애플리케이션 전반에 걸쳐 적용되는 공통 기능을 비즈니스 로직으로부터 분리하는 것을 AOP라고 한다.
PSA(Portable Service Abstraction, 일관된 서비스 추상화)
JDBC처럼 특정 기술과 관련된 서비스를 추상화하여 일관된 방식으로 사용될 수 있도록 한 것을 PSA라고 한다.

스프링 부트 (Spring Boot) 🌱
스프링 부트(Spring Boot)는 스프링으로 애플리케이션을 만들 때에 필요한 설정을 간편하게 처리해주는 별도의 프레임워크이다.
Dependency 관리 자동화
dependency들에는 기본적으로 버전이 존재한다. 기존 Spring에서는 dependency들의 호환되는 번전을 일일이 맞추어 주어야 했다. 또한, Dependency들의 버전의 조합이 올바르지 않을 경우 예상치 못한 오류가 발생할 수 있다.
스프링부트는 maven이나 gradle 등과 같은 빌드 도구에 버전을 명시하지 않아도 자동으로 관리를 해준다.
내장 웹서버 제공
스프링은 배포를 할 때에 별도의 외장 웹 서버를 설치하고, 프로젝트를 War 파일로 빌드하여 배포를 진행한다. 이러한 방식은 처리 속도가 느리며 번거롭다는 단점을 가진다.
하지만 스프링부트는 자체적인 웹 서버를 내장하고 있어, 빠르고 간편하게 배포를 진행할 수 있다.
Jar 빌드 가능
독립적으로 실행 가능한 Jar 파일로 프로젝트를 빌드할 수 있어, 클라우드 서비스 및 도커와 같은 가상화 환경에 빠르게 배포 할 수 있다.
'Back-end > JAVA & Spring' 카테고리의 다른 글
| [SVN] SVN: '0x0040010b: Obtain Project Name' 에러 : svn check-out 불가능시 (1) | 2024.03.21 |
|---|---|
| [ Spring boot ] v3.0.0 이상에서 JDK 변경시 빌드 에러.. (3) | 2023.12.08 |
| [ eGov ] 전자정부프레임워크 (0) | 2023.05.09 |
| [ Eclipse ] Eclipse MarketPlace 실행 오류 (1) | 2023.05.09 |
| [ Spring ] Maven과 Gradle (1) | 2023.04.10 |