728x90
반응형
스프링(Spring)
스프링(Spring) 은 경량화된 자바 프레임워크다.
기업 환경에서의 자바 애플리케이션 개발을 간소화하고, 유지보수성을 높이며, 테스트 가능성을 향상시키는 목적을 가지고 설계됐다.
의존성 주입, 제어 역전 등의 기능을 제공하여 개발자가 객체 지향적이고 모듈화된 코드를 작성할 수 있다.
스프링 부트(Spring Boot)
스프링 부트(Spring Boot) 는 스프링 프레임워크의 하나로, 스프링 기반의 애플리케이션을 빠르고 쉽게 개발할 수 있도록 도와주는 도구다.
자동 설정, 내장 서버, 스타터 의존성 등의 기능을 제공해 편리한 개발이 가능하도록 한다.
스프링(Spring) 프레임워크의 탄생 배경
스프링의 이름은 '봄(Spring)'에서 유래됐다.
EJB(Enterprise JavaBeans)의 복잡성과 무거움에서 벗어나, 더 가볍고 유연한 프레임워크를 제공하겠다는 의지를 반영하고 있다.
봄의 의미처럼, 자바 애플리케이션 개발에 새로운 접근 방식을 제공하고, 더 효율적으로 일할 수 있하는 목표를 담고 있다.
또한, '스프링(Spring)'이라는 단어 자체가 갖는 가벼움과 탄성을 연상시켜, 프레임워크의 경량성과 유연성을 상징으로 담아내기도 했다.
스프링의 주요 특징
- 의존성 주입(Dependency Injection, DI):
객체 간의 의존 관계를 설정 파일(XML 또는 Java Config)이나 어노테이션을 통해 외부에서 주입할 수 있다.
의존성 주입으로 느슨한 결합(Loose Coupling)구현이 유연하게 가능하다. - 제어 역전(Inversion of Control, IoC):
개발자가 객체의 생명 주기를 직접 관리하지 않고, 스프링 컨테이너가 객체의 생성과 관리를 대신 수행하는 것이다.
객체 간의 결합도를 줄이고 코드의 재사용성을 높이며, 개발 생산성을 증대시킬 수 있다. - AOP(Aspect-Oriented Programming):
관점 지향 프로그래밍이라는 뜻으로 관심사를 분리시키는 기술이다.
핵심 비즈니스 로직과 횡단 관심 사항(예: 로깅, 트랜잭션 관리)을 분리하여 코드를 모듈화하고 중복을 줄일 수 있다. - 트랜잭션 관리:
선언적 방식으로 트랜잭션을 관리할 수 있어, 데이터베이스 연산의 ACID 속성을 보장하고 예외 상황을 처리할 수 있다. - 통합 지원:
다양한 서드파티 프레임워크와의 통합을 지원하며, RESTful 웹 서비스 개발, 메시징 시스템 연동, 데이터베이스 접근 등 다양한 기능을 제공한다.
- 모듈화:
각 기능을 독립적으로 사용할 수 있는 모듈화된 구조를 가지고 있어 필요에 따라 필요한 모듈만 선택하여 사용할 수 있다.
스프링 부트의 주요 특징
- 스타터(Starter) 의존성:예를 들어, 웹 애플리케이션을 개발할 때
spring-boot-starter-web
의존성을 추가하면 필요한 모든 의존성을 한 번에 포함할 수 있다. 스프링 부트는 스타터 의존성을 제공하여 프로젝트를 손쉽게 시작할 수 있다.
- 자동 설정(Auto Configuration):
스프링 부트는 애플리케이션의 설정을 자동으로 추측하여 제공한다.
개발자가 별도로 설정하지 않아도 기본적인 설정들이 자동으로 동작하도록 설계되어 있다. - 내장 서버:
스프링 부트는 Tomcat, Jetty, Undertow와 같은 내장 서버를 제공해 웹 서버 설치 없이 실행하고 배포할 수 있다.
- 편리한 관리:
Actuator를 통해 애플리케이션의 상태 모니터링, 메트릭 수집, 환경 정보 등을 제공해 운영 환경에서 애플리케이션을 관리하기 용이하다.
- 외부 설정:
YAML 또는 properties 파일을 통해 다양한 환경에 대응하는 애플리케이션의 외부 설정을 관리할 수 있다.
- 프로덕션 준비 기능:애플리케이션을 실제 운영 환경에 배포할 때 제공되는 필요한 기능들을 사용할 수 있다.
스프링 부트는 기본적으로 다양한 프로덕션 준비 기능들을 포함하고 있다
728x90
반응형
'Back-end > SpringBoot' 카테고리의 다른 글
스프링에서 DB 트랜잭션을 어떻게 사용할까? (0) | 2024.07.15 |
---|---|
Persistence Context란 무엇일까? (1) | 2024.07.15 |
JWT 토큰 기반 로그인 구현하기(1) (0) | 2024.07.08 |
Bean이란 무엇일까? (0) | 2024.06.24 |
의존성 주입이란 무엇일까? (0) | 2024.06.23 |