Spring 프레임워크란?
Java application을 개발을 지원하는 포괄적인 프레임워크로, 전체 스프링 생태계의 기반이 된다.
의존성 주입을 통한 제어의 역전과 관점 지향 프로그래밍, JDBC, JPA, Hibernate 등의 데이터 액세스 기술 및 트랜잭션 관리 등을 제공하여 엔터프라이즈급 애플리케이션을 구축할 수 있도록 한다.
Spring MVC(Model-View-Controller란?
웹 애플리케이션 개발을 단순화하기 위해 설계된 웹 프레임워크로, 애플리케이션을 모델, 뷰, 컨트롤러로 구분하는 MVC 아키텍처 패턴을 따른다. HTTP 기반의 웹 애플리케이션 개발에 특화되어 있으며, @Controller와 @RestContorller등의 기능을 제공하며 서블렛 기반으로 동작한다.
* 서블렛: 클라이언트의 요청을 처리하고 응답을 반환하는 자바 클래스로, MVC 패턴에서 컨트롤의 역할을 수행한다.
- Model : 애플리케이션의 데이터를 표현하고 비즈니스 로직을 캡슐화
- View: JSP 등의 기술을 사용해 사용자 인터페이스를 렌더링
- Controller: 클라이언트에서 들어오는 요청을 처리하고, 모델을 사용하여 데이터를 처리 후 사용자 인터페이스 렌더링을 위한 뷰를 반환
Spring Boot란?
새로운 Spring 애플리케이션 개발을 단순화 하기 위해 스프링과 스프링 MVC위에 구축된 프로젝트로, 개발자가 광범위한 구성보다는 실제 코드 작성에 집중할 수 있게 해준다.
프로젝트에 포함된 의존성을 기반으로 스프링 애플리케이션을 자동으로 구성해주며, Tomcat, Jetty과 같은 내장 서버와 함께 제공 되므로 별도의 웹 서버 없이 Java 애플리케이션을 실행할 수 있게 해준다.
스프링에서 제공하는 HTTP 클라이언트 유틸리티인 RestTemplate이나 WebClient를 통해 REST API 호출을 쉽게 구현할 수 있게 해준다.
c.f. 스프링 생태계의 계층별 구성요소
스프링 생태계에는 다양한 모듈이 존재하며, 프로젝트의 규모나 요구사항에 맞추어 필요한 모듈을 선택하여 사용할 수 있다. 일반적인 웹 서비스에는 Spring Boot + Spring MVC, Spring Data JPA 조합이 많이 사용된다.
웹계층
- Spring MVC : 웹 애플리케이션 개발을 위한 MVC 프레임워크
- Spring WebFlux : 리액티브 웹 애플리케이션 개발 지원
서비스계층
- Spring Cloud : MSA 환경에서 여러개의 스프링 부트 애플리케이션 관
- Spring Security : 애플리케이션의 보안 및 인증처리 (JWT, OAuth2 등)
- Spring Integration : 엔터프라이즈 통합 패턴 구현
데이터계층
- Spring Data : 다양한 데이터 저장소 지원하여 데이터 CRUD
- Spring JDBC/ORM : 데이터 베이스 접근 추상화
구성요소간의 관계
- 각 모듈은 독립적으로 사용 가능하며, 필요에 다라 조합도 가능하다.
- 스프링 프레임워크가 가장 기반이 되며, 그 위에 스프링 부트가 구축된다.
- 스프링 부트는 다른 모든 스프링 프로젝트들을 쉽게 통합하고 설정할 수 있게 해준다.
'열심히 직장인 > Hello World' 카테고리의 다른 글
ACID 이론과 CAP 이론 비교 정리 (0) | 2025.05.20 |
---|---|
글또 10기를 마무리하며 (1) | 2025.03.30 |
Docker를 활용한 솔루션 배포 준비 과정: 데이터 정리부터 실행까지 (0) | 2025.03.15 |
Java의 ThreadLocal은 무엇이고 왜 사용할까? (0) | 2025.02.27 |
DeepSeek(딥시크)란? 개인정보 유출 우려나 검열 없이 딥시크 사용하는 법 (0) | 2025.02.02 |
[vue-ganttastic] 무료 간트 차트 생성 라이브러리 (vue3) (1) | 2025.01.19 |
방통대 컴퓨터 과학과 3학년 2학기 후기 (선형대수/자료구조/컴퓨터구조/UNIX시스템/멀티미디어시스템/대학영어) (1) | 2024.12.30 |
Apache POI 라이브러리를 이용해 Java에서 엑셀 파일 만들기 (DB to File) (1) | 2024.12.30 |
JAVA로 파일처리 하기 - 스트림(STREAM)의 이해 (DB 데이터로 엑셀 파일 만들기) (0) | 2024.12.22 |
서버와 컨테이너, 그리고 POD (CI/CD 파이프라인 흐름) (4) | 2024.11.13 |