Spring 81

[📕 기초 Spring] 6-2. 메모장 프로젝트 - ver3 (레이어드 아키텍처 적용)

메모장 프로젝트 ver2 의 문제점Controller에 책임이 너무 많다.(요청, 비지니스 로직, 응답, 예외 처리 등)서버가 종료된 후 다시 켜지면 데이터가 모두 초기화 된다.📕 목차Controller 분리하기 메모 생성 API 리팩토링 메모 목록 조회 API 리팩토링 메모 단건 조회 API 리팩토링 메모 전체 수정 API 리팩토링 메모 제목 수정 API 리팩토링 메모 삭제 API 리팩토링 해결한 문제점 & 문제점1. Controller 분리하기책임 분리Controller클라이언트의 요청을 받는 역할을 수행한다.요청에 대한 처리를 Service Layer에 전달한다.Service에서 처리 완료된 결과를 클라이언트에 응답한다.Service Layer비지니스 로직 처리Repository Layer데이터베..

Spring/강의 2025.05.05

[📕 기초 Spring] 6-1. 레이어드 아키텍처(Layered Architecture)

📕 목차기존 패턴의 문제점레이어드 아키텍처(Layered Architecture)프레젠테이션 계층 (Presentation Layer)비즈니스 계층 (Business Layer)데이터 접근 계층 (Data Access Layer)DTO, Model(Entity), DAO1. 기존 패턴의 문제점기존의 MVC 패턴에서 Controller는 역할이 무수히 많다.요청에 대한 처리예외처리View Template 응답 or Data 응답비지니스 로직 처리DB 상호작용문제점Controller에서 요청에 대한 모든 처리를 수행한다. 즉, 책임이 너무 많다.기능 추가, 수정, 삭제 등의 유지보수가 힘들어진다.코드의 재사용성이 떨어진다. 메서드로 분리하여도 메서드를 호출하는 중복 코드가 발생한다.2. 레이어드 아키텍처(..

Spring/강의 2025.05.05

[📕 기초 Spring] 5-4. 메모장 프로젝트 - ver2 (프론트 컨트롤러, 어댑터 패턴 적용)

메모장 프로젝트 ver1 의 문제점실제 문제의 원인을 파악하기 어렵거나 잘못된 정보 전달 및 처리가 될 수 있다.응답 코드가 세분화 되어있지 않다.(성공 시 모두 200OK)적절한 예외가 발생하지 않는다.(실패 시 모두 500 Error 발생)서버가 종료된 후 다시 켜지면 데이터가 모두 초기화 된다.📕 목차요구사항 분석 및 설계 메모 생성 기능 메모 목록 조회 기능 메모 단 건 조회 기능 메모 단 건, 전체 수정 기능 메모 단 건 제목 수정 기능 메모 삭제 기능 해결한 문제점 & 문제점1. 요구사항 분석 및 설계메모장 API 요구사항통신 데이터 형태는 JSON이다.각각의 메모는 식별자(id), 제목(title), 내용(contents)으로 구성되어 있다.응답을 각각의 API에 알맞게 해야 한다.메모를 ..

Spring/강의 2025.05.04

[📕 기초 Spring] 5-3. 메모장 프로젝트 - ver1 (CRUD 실습, MVC 패턴 적용)

[실습] 메모를 CRUD 할 수 있는 Web Application 만들어보기메모 생성 기능 C (Create)메모 단건 조회 기능 R (Read)메모 전체 수정 기능 U (Update)메모 단건 삭제 기능 D (Delete)📕 목차요구사항 분석 및 설계 프로젝트 생성 프로젝트 Git 연동 클래스 설계 메모 생성 기능 메모 조회 기능 메모 수정 기능 메모 삭제 기능 1. 요구사항 분석 및 설계 메모장 API 요구 사항 통신 데이터 형태는 JSON이다.각각의 메모는 식별자(id), 제목(title), 내용(contents)으로 구성되어 있다.메모 CRUD 기능이 필요하다. HTTP API 설계메모 생성POST/memos메모 단건 조회GET/memos/{id}메모 수정(전체)PUT/memos/{id}메모 ..

Spring/강의 2025.05.04

[📕 기초 Spring] 5-2. 응답 데이터(서버 → 클라이언트)와 처리 방법

📕 목차응답 데이터(Response Data)정적 리소스 (Static Resources)View Template (동적 HTML 생성)HTTP Message Body1. 응답 데이터(Response Data)응답 데이터(Response Data)클라이언트가 서버에 요청(Request)을 보낸 후, 서버가 이를 처리하고 클라이언트로 다시 보내는 데이터클라이언트가 요청한 정보를 제공하거나, 처리 결과를 알려주는 중요한 역할을 한다. 응답 데이터 처리 방식정적 리소스 (Static Resources)View Template (동적 HTML 생성)HTTP Message Body 2. 정적 리소스 (Static Resources)정적 리소스 (Static Resources)파일 형태로 서버에 저장된 데이터를..

Spring/강의 2025.05.04

[📕 기초 Spring] 5-1. 요청 데이터(클라이언트 → 서버)와 처리 방법

📕 목차요청데이터 (Request Data)Query ParameterHTTP Form DataRequest Body어노테이션별 사용법 정리 1. 요청 데이터 (Request Data)요청 데이터(Request Data)클라이언트(Client)가 서버(Server)에 HTTP 요청을 보낼 때, 원하는 작업을 수행하거나 정보를 전달하기 위해 함께 보내는 데이터를 의미한다.요청 데이터 전달 방식은 크게 세가지가 있다. Query Parameter HTTP Form DataHTTP Request Body전달 방식 전송 위치 사용 용도 특징 Query ParameterURL검색, 필터링데이터 노출됨HTTP Form DataBody로그인, 회원가입 등HTML 폼에 최적화HTTP Request BodyBod..

Spring/강의 2025.05.04

MultiValueMap<K, V>

MultiValueMap이란?Spring에서 제공하는 인터페이스로, 하나의 키에 여러 개의 값을 저장할 수 있는 Map 자료구조이다.일반적인 Map는 하나의 키에 하나의 값만 매핑할 수 있지만,MultiValueMap는 하나의 키에 List 형태의 여러 값을 매핑할 수 있다.주로 HTTP 쿼리 파라미터, Form 데이터, 헤더 정보 등에서 다중 값 처리가 필요할 때 사용된다. MultiValueMap은 Spring Framework에서 제공하는 자료구조이므로, Spring 환경에서만 기본적으로 사용 가능하다.org.springframework.util 패키지에 속해 있다.주요 메서드 add(K key, V value)주어진 키에 값을 추가한다. 같은 키에 대해 여러 값을 추가할 수 있다.MultiVal..

Spring/문법 2025.05.03

[📕 기초 Spring] 4-1. 스프링 주요 어노테이션(Annotation)

📕 목차어노테이션(Annotation)의 역할@Component, @Service, @Repository, @Controller, @RestController @Autowired@Value @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping@Bean@Transactional@PostConstruct, @PreDestroy@SpringBootApplication@Slf4j, @Log4j2, @Log메타 어노테이션강의에서 소개하는 어노테이션에 추가로 Spring에서 자주 사용되는 어노테이션들을 소개하고, 각 어노테이션의 사용 방법과 예제를 정리해보고자 한다.1. 어노테이션(Annotation)의 역할 Spring에서 어노테이션 S..

Spring/강의 2025.05.03

[📕 기초 Spring] 3-3. Spring MVC

📕 목차Spring MVCSpring MVC 구조 Spring MVC 흐름 핵심 구성 요소 정리 Spring MVC 패턴의 장점1. Spring MVC자바 기반의 웹 애플리케이션을 개발하기 위한 프레임워크인 Spring Framework의 일부이다.MVC 패턴에 프론트 컨트롤러 패턴, 어댑터 패턴이 적용된 구조를 가지고 있다.이 패턴은 코드의 가독성과 유지보수성을 높이고, 요청 처리 과정을 역할에 따라 분리하여 효율적인 개발을 돕는다.2. Spring MVC 구조 Spring MVC에서 프론트 컨트롤러의 역할DispatcherServlet: 모든 HTTP 요청은 처음에 DispatcherServlet을 통해 들어온다. 이 서블릿은 요청을 처리할 수 있는 적절한 핸들러를 찾고, 그 핸들러가 처리할 수 ..

Spring/강의 2025.05.03

[📕 기초 Spring] 3-2. MVC 패턴의 발전

📕 목차MVC 패턴의 문제점 프론트 컨트롤러 패턴 어댑터 패턴 전체 요약 및 발전 흐름 1. MVC 패턴의 문제점MVC 패턴을 적용하면 View는 오직 Model을 참조하여 화면을 그리는 역할만 담당한다. 그러나 Controller는 여전히 다양한 문제를 안고 있다. Controller에서 발생하는 문제점View 이동 코드가 중복됨모든 컨트롤러에서 dispatcher.forward()를 직접 호출해야 한다.View 경로를 하드코딩해야 함경로를 문자열로 직접 입력해야 하고, 파일명이 바뀌면 모든 코드 수정이 필요하다.확장자에 유연하지 않음JSP에 고정되어 있어 다른 템플릿 엔진으로 바꾸기 어렵다.응답 객체(HttpServletResponse)를 잘 안 씀대부분 JSP에서 처리되므로 활용도가 낮고, 테..

Spring/강의 2025.05.03