본문 바로가기

Spring MVC28

[Spring] Spring @Scheduled 스케줄러 간단히 사용 해보기 01. @Scheduled 스케줄러 간단히 사용 해보기이번 시간에는 스프링에서 제공하는 스케쥴러 기능을 사용 해보자간단한 예시를 통해 스케쥴러의 특징에 대해서 알아본다01-1. SpringBootScheduleApplication 설정package com.spring.schedule;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.scheduling.annotation.EnableScheduling;@EnableScheduling // 스케쥴링 기능 활성화@SpringBootApplicationp.. 2025. 1. 7.
[Spring] Spring Boot JUnit5 자주 사용되는 어노테이션 정리 Spring Boot JUnit5 자주 사용되는 어노테이션 정리JUnit5 테스트 시 사용하는 어노테이션 및 부가 기능에 대해 간략히 정리한다@DisplayName테스트 이름 명시어떤 테스트를 의미하는지 테스트명 결정@SpringBootTest vs @WebMvcTest통합 테스트와 웹 레이어 기반 단위 테스트@SpringBootTest목적 : 애플리케이션 전체 컨텍스트 로드 후 통합 테스트 수행테스트 범위 : 애플리케이션 전체 컨텍스트 로드하기에, DB, 서비스 계층, 리포지토리, 보안 등 모든 빈을 포함한 전체 테스트 수행 가능장점 : 애플리케이션 실제 실행되는 환경과 동일한 환경 테스트 가능단점 : 테스트 시간이 길어짐, 모든 컨테스트 로드 하기에@WebMvcTest목적 : MVC (Controll.. 2025. 1. 7.
[스프링 MVC - 백엔드 웹 개발 기술] 요청 매핑 핸들러 어뎁터 구조 - RequestMappingHandlerAdapter 01. 요청 매핑 핸들러 어뎁터 구조이번 시간에는 요청 매핑 핸들러 어뎁터(RequestMappingHandlerAdapter) 구조에 대해서 알아본다이전에 HTTP 메시지 컨버터에 대해 배웠지만 아래 사진에서는 메시지 컨버터 관련한 부분이 보이지 않는다.이러한 HttpMessageConverter 는 아래 사진에서 어떠한 부분에 해당이 되는 것일까?이번 시간의 주요 포인트는 요청 매핑 핸들러 어댑터, 그리고 HTTP 메시지 컨버터가 어디에서 사용이 되는지 확인해보자HTTP 메시지 컨버터는 스프링 MVC의 어느곳에서 사용되는 것일까?위 그림만 봤을때는 HTTP 메시지 컨버터가 사용되는 곳은 보이지 않는다비밀은 어노테이션 기반의 컨트롤러인 @RequestMapping을 처리하는 핸들러 어댑터인 요청 매핑 .. 2024. 1. 23.
[스프링 MVC - 백엔드 웹 개발 기술] HTTP 메시지 컨버터(Message Converter) 01. 요청 매핑 핸들러 어뎁터 구조RequestMappingHandlerAdapterHTTP 메시지 컨버터는 스프링 MVC의 어느곳에서 사용되는 것일까?위 그림을 봤을대 HTTP 메시지 컨버터가 사용되는 곳은 보이지 않는다모든 비밀은 어노테이션 기반의 컨트롤러인 @RequestMapping을 처리하는 핸들러 어댑터인 RequestMappingHandlerAdaptor(요청 매핑 핸들러 어뎁터)에 있다01-1. RequestMappingHandlerAdaptor 동작 방식ArgumentResolver(요청시)RequestMapping 핸들러 어댑터 → ArgumentResolver에게 문의(파라미터 존재?) → 핸들러 전달@GetMapping("/test1")public ResponseEntity tes.. 2024. 1. 11.
[스프링 MVC - 백엔드 웹 개발 기술] HTTP 메시지 컨버터(Message Converter) 01. HTTP 메시지 컨버터뷰 템플릿으로 HTML(mustache, thymeleaf)을 생성해서 응답하는 것이 아니라 HTTP API처럼 JSON 데이터를 HTTP 메시지 바디에서 읽거나 쓰는 경우 HTTP 메시지 컨버터 사용한다HTTP 메시지 컨버터 설명 전 이전에 설명한 부분을 다시 복기 해보자01-1. @ResponseBody 원리@ResponseBody 어노테이션 사용HTTP BODY에 문자 내용 직접 반환viewResolver 대신 HttpMessageConvert 동작기본 문자 반환 처리시 : StringHttpMessageConverter기본 객체 반환 처리시 : MappingJackson2HttpMessageConverterbyte 처리 등등 기타 여러 HttpMessageConvert.. 2024. 1. 5.
[스프링 MVC - 백엔드 웹 개발 기술] HTTP 응답 - 정적 리소스와 뷰 템플릿 반환 및 응답 방법 01. 응답 - 정적 리소스, 뷰 템플릿응답 데이터는 이미 앞에서 일부 다른 내용이지만, 응답 부분에 초점을 맞추어 정리해보자스프링(서버)에서 응답 데이터를 만드는 방법은 크게 3가지 이다01-1. 응답 데이터 생성 방법 3가지정적 리소스예) 웹 브라우저에 정적 HTML, css, js를 제공할 때 정적 리소스 사용Image, css, js뷰 템플릿 사용예) 웹 브라우저에 동적인 HTML을 제공할 때 뷰 템플릿 사용JSP, ThymleafHTTP 메시지 사용HTTP API 제공 시 HTML이 아니라 데이터를 전달해야 하기에 Body에 JSON 담아서 전달01-2. 스프링 부트는 정적 리소스 제공(src/main/resources)정적 리소스란 해당 파일을 변경 없이 그대로 서비스 해주는 것을 의미한다스프.. 2024. 1. 5.
[스프링 MVC - 백엔드 웹 개발 기술] HTTP 요청 파라미터 - 쿼리 스트링과 HTML Form, @RequestParam, @ModelAttribute, 텍스트, JSON 요청 방식 01. HTTP 요청 파라미터 - QueryString, HTML Form이번 시간에는 쿼리 스트링와 HTML Form 데이터 전송 방식에 대해 알아본다.01-1. 클라이언트 → 서버 → 데이터 전송 방식클라이언트 → 서버로 데이터 전송하는 방식은 아래 3가지 존재GET - 쿼리 스트링(Query String)/user?username=hello&age=20URL 쿼리 파라미터에 데이터 포함 후 전달예) 검색, 필터, 페이징 등에서 사용POST - HTML FormContent-type : application/x-www-form-urlencoded메시지 바디에 쿼리 파라미터 형식으로 전달username=hello&age=20HTTP Message BodyHTTP API에서 사용 - JSON, XML, .. 2024. 1. 5.
[스프링 MVC - 백엔드 웹 개발 기술] 컨트롤러의 요청 매핑 방식과 HTTP 요청 기본 헤더 값 조회 방법 01. 요청 매핑요청 매핑이란 요청이 왔을 때 어떤 컨트롤러가 호출이 될지 매핑하는 방법01-1. MappingController - RequestMappingpackage hello.springmvc.basic.requestmapping;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class MappingController { private Logger log = LoggerFactory.get.. 2024. 1. 5.
[스프링 MVC - 백엔드 웹 개발 기술] 프로젝트 생성과 로깅 간단히 알아보기 01. 프로젝트 생성스프링부트 스타터 사이트 이동 후 신규 프로젝트 생성https://start.spring.io프로젝트 선택Project: Gradle ProjectLanguage: JavaSpring Boot: 2.7.xProject MetadataGroup: helloArtifact: springmvcName: springmvcPackage name: hello.springmvcPackaging: Jar(주의)Java: 11Dependencies: Spring Web, Thymleaf, Lombok01-1. 주의 사항Packaging는 War가 아닌 Jar를 선택하자JSP를 사용하지 않기 때문에 Jar 사용하는 것이 좋음Jar 사용 시 항상 내장 서버(톰캣)을 사용하고, webapp 경로도 사용하지.. 2024. 1. 5.
[스프링 MVC - 백엔드 웹 개발 기술] 스프링 MVC 구조의 이해 01. 스프링 MVC 전체 구조직접 만든 MVC Framework와 스프링 MVC를 비교해보자01-1. 직접 만든 MVC 프레임워크 구조01-2. 스프링 MVC 구조직접 만든 프레임워크 → 스프링 MVC와 비교FrontController → DispatcherServlet (FrontController Pattern)DispatcherServlet이 스프링에서 가장 중요한 개념 중 하나FrontController Pattern을 구현한 FrontController를 DispatcherServlet이라 지칭함handlerMappingMap → HandlerMappingMyHandlerAdapter → HandlerAdapterModelView → ModelAndViewviewResolver → ViewRe.. 2023. 10. 1.
[스프링 MVC - 백엔드 웹 개발 기술] MVC 프레임워크 만들기 01. 프론트 컨트롤러 패턴 소개이번 시간에는 MVC 패턴을 개선하는 시간을 가져보자.키워드는 공통 로직을 갖는 각각의 컨트롤러를 추상화하는 것.01-1. 프론트 컨트롤러 패턴 도입 전이전 프론트 컨트롤러(Front Controller) 도입 전에는 각 컨트롤러가 하나의 공통 로직을 가지고 있었음이러한 부분은 “코드의 중복” 이라 볼 수 있기 때문에 좋은 구조가 아님😶 그렇다면 이러한 중복을 어떻게 없앨 수 있는 것일까?.. 그것은 바로 프론트 컨트롤러 패턴! 스프링에서는 프론트 컨트롤러(Front Controller) 패턴을 도입하여 이러한 중복을 추상화 하였다. 다음으로 프론트 컨트롤러에 대해 간단히 알아보고 넘어가자.01-2. 프론트 컨트롤러 패턴 도입 후프론트 컨트롤러 도입 후 공통 로직은 1개.. 2023. 9. 11.
[스프링 MVC - 백엔드 웹 개발 기술] 서블릿, JSP, MVC 패턴 01. 회원 관리 웹 애플리케이션 요구사항이번 시간에는 아주 간단한 회원 관리 웹 애플리케이션을 구축하는 시간을 갖는다Core 도메인 모듈을 생성 한다서블릿을 통해 구현JSP를 통해 구현MVC 패턴으로 구현01-1. 요구사항회원 정보seq를 위해 id 필드 생성이름은 username 필드 생성나이는 age 필드 생성01-2. 도메인 객체 생성 - Memberpackage hello.servlet.domain.member;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class Member { private Long id; // seq private String username; private int age; publi.. 2023. 8. 26.