2024-05-20 오늘의 TIL

이재성·2024년 5월 21일
post-thumbnail

Java Spring

Spring은 자바 플랫폼을 위한 유연한 애플리케이션 프레임워크입니다. 주요 목표는 엔터프라이즈급 애플리케이션을 쉽게 개발하고 유지보수할 수 있도록 하는 것입니다. Spring Framework는 다양한 모듈로 구성됨

주요 특징

  • IoC (Inversion of Control)

IoC는 객체의 생성과 의존성 관리를 프레임워크가 담당하는 것을 의미. 이는 애플리케이션 코드의 결합도를 낮추고 테스트 용이성을 높입니다.

  • DI (Dependency Injection)
    Spring은 DI 패턴을 통해 객체의 의존성을 설정파일이나 어노테이션을 사용해 주입합니다.

  • AOP (Aspect-Oriented Programming)

AOP는 횡단 관심사를 모듈화할 수 있게 합니다. 이는 핵심 비즈니스 로직과 부가 기능을 분리하여 코드의 유지보수성을 높입니다.

  • MVC (Model-View-Controller)

Spring MVC는 웹 애플리케이션 개발을 위한 프레임워크로, 요청을 처리하고 응답을 생성하는데 필요한 구조를 제공합니다.
@Controller, @RequestMapping 등의 어노테이션을 사용하여 컨트롤러를 정의하고 요청을 매핑합니다.

  • Transaction Management:

Spring은 선언적 트랜잭션 관리 기능을 제공하여 트랜잭션을 쉽게 관리할 수 있습니다. 이는 데이터 일관성을 유지하는 데 도움을 줌.

  • Data Access

Spring은 JPA 등의 다양한 데이터 접근 기술을 지원합니다. 이는 데이터베이스 연동을 간편하게 하고 코드의 재사용성을 높인다.

  • Security

Spring Security는 인증과 권한 부여를 위한 포괄적인 보안 솔루션을 제공.

  • Integration

Spring은 다양한 외부 시스템과의 통합을 위한 기능을 제공하며, 이를 통해 메시징, 원격 처리, 웹 서비스 등을 쉽게 구현할 수 있습니다.

Spring MVC의 주요 구성 요소

  • Model

애플리케이션의 데이터를 나타냅니다. 서비스 계층과 통신하며 비즈니스 로직을 수행합니다.
일반적으로 도메인 객체나 POJO(Plain Old Java Object)로 구현됩니다.

  • View

사용자에게 데이터를 표시하는 역할을 합니다. JSP, Thymeleaf, FreeMarker 등의 템플릿 엔진을 사용하여 구현할 수 있습니다.
컨트롤러에서 제공한 모델 데이터를 사용하여 사용자에게 HTML, JSON, XML 등의 형식으로 데이터를 렌더링합니다.

  • Controller

사용자의 요청을 처리하고 적절한 뷰를 선택하여 응답을 생성합니다.
요청 매핑, 모델 데이터 설정, 뷰 이름 반환 등을 담당합니다.

Spring MVC의 동작 흐름

  1. 사용자가 웹 브라우저에서 URL을 요청합니다.
    요청은 DispatcherServlet으로 전달됩니다.
  2. DispatcherServlet은 Spring MVC의 프론트 컨트롤러로, 모든 요청을 중앙에서 관리합니다.
  3. DispatcherServlet은 요청을 적절한 컨트롤러로 매핑합니다.
  4. 컨트롤러는 요청을 처리하고, 필요한 데이터를 모델에 추가합니다.
  5. 컨트롤러는 뷰 이름을 DispatcherServlet에 반환합니다.
  6. DispatcherServlet은 뷰 리졸버(View Resolver)를 사용하여 실제 뷰를 찾고, 뷰에 모델 데이터를 전달합니다.
  7. 뷰는 모델 데이터를 사용하여 HTML 등을 생성하고, 사용자의 웹 브라우저에 응답을 반환합니다.

Spring MVC의 주요 어노테이션

  • @Controller:

클래스를 컨트롤러로 표시합니다.

  • (@GetMapping,@PostMapping,@PutMapping,@DeleteMapping)

HTTP 메서드(GET, POST, PUT, DELETE 등)와 요청 URL을 매핑합니다.

  • @RequestParam:

요청 파라미터를 메서드 매개변수에 바인딩합니다. 기본값을 설정할 수 있습니다.

  • @PathVariable:

URL 경로의 일부를 메서드 매개변수에 바인딩합니다.

  • @RequestBody:

요청 본문을 Java 객체로 변환합니다. 주로 JSON 데이터를 처리할 때 사용됩니다.

  • @ResponseBody:

메서드가 반환하는 값을 HTTP 응답 본문으로 직접 전송합니다. 주로 RESTful 웹 서비스에서 사용됩니다.

장점

  • 다양한 뷰 기술(JSP, Thymeleaf 등)을 지원하여 자유롭게 선택할 수 있습니다.
  • 컨트롤러, 서비스, 리포지토리 등의 계층을 분리하여 코드의 재사용성과 유지보수성을 높입니다.
  • Spring의 다른 모듈과 쉽게 통합할 수 있습니다. 예를 들어, Spring Security, Spring Data 등을 쉽게 사용할 수 있습니다.
profile
하이요

0개의 댓글