spring11 HandlerMapping & RequestMapping 📝 HandlerMapping & RequestMapping1. HandlerMappingHandlerMapping은 Spring MVC의 요청 처리 흐름에서 요청 URL을 적절한 컨트롤러(Handler)로 매핑하는 역할을 담당합니다.HandlerMapping의 역할클라이언트로부터 들어온 HTTP 요청 URL을 기반으로 어떤 컨트롤러 메서드를 호출할지 결정.Spring MVC가 제공하는 다양한 HandlerMapping 구현체 중 하나를 사용하여 URL과 컨트롤러를 연결.HandlerMapping의 구현체RequestMappingHandlerMapping: 애노테이션 기반의 매핑을 처리.SimpleUrlHandlerMapping: XML 또는 Java 설정 파일을 통해 매핑 정의.BeanNameUrlH.. spring 2024. 12. 2. SpringMVC ArgumentResolver 📝 Spring MVC의 ArgumentResolver란?ArgumentResolver는 Spring MVC에서 컨트롤러의 메서드 파라미터를 해석하고 바인딩하는 데 사용되는 인터페이스입니다. Spring MVC의 요청 처리 흐름에서 HandlerMethodArgumentResolver 인터페이스를 구현하여 특정한 타입의 메서드 파라미터를 처리할 수 있습니다.ArgumentResolver란?역할:HTTP 요청의 데이터 (예: 쿼리 파라미터, URL 경로 변수, 헤더, 요청 본문 등)를 컨트롤러 메서드의 파라미터로 변환.컨트롤러의 메서드 파라미터에 대한 맞춤형 로직 적용.주요 인터페이스:HandlerMethodArgumentResolver 인터페이스:supportsParameter(MethodParamet.. spring 2024. 12. 2. Entity 클래스와 DTO를 분리하는 이유 ❓ ChatGPT에 질문package jpabook.jpashop.controller;import jakarta.validation.Valid;import jpabook.jpashop.domain.Address;import jpabook.jpashop.domain.Member;import jpabook.jpashop.service.MemberService;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.validation.Bind.. spring 2024. 11. 30. @RequestBody @Valid Object obj, BindingResult br 타입에러가 br에 담기지 않는 이유 @RequestBody와 @Valid의 동작 방식동작 원리 설명@RequestBody @Valid ItemSaveForm form, BindingResult br의 경우:@RequestBody는 클라이언트 요청의 HTTP 본문을 Java 객체로 변환합니다. 이 과정은 HttpMessageConverter가 담당합니다.변환 중에 JSON → Java 객체로 매핑 시 타입 에러가 발생하면, Spring은 컨트롤러 메서드에 접근하지 않고 예외(HttpMessageNotReadableException 등)를 던집니다.따라서, BindingResult에 에러가 바인딩되지 않고, 컨트롤러 메서드 실행 전에 예외가 발생하여 정상 동작하지 않습니다.@Valid ItemSaveForm form, BindingResult.. spring 2024. 11. 30. 도메인 모델 패턴 vs 트랜잭션 스크립트 패턴 🔥 도메인 모델 패턴이란?도메인 모델 패턴(Domain Model Pattern)은 애플리케이션의 비즈니스 로직을 도메인 객체(엔티티) 내부에 포함시키는 설계 패턴입니다. 즉, 비즈니스 규칙, 데이터 변경, 데이터 검증 등을 도메인 객체가 직접 수행하도록 설계합니다.이 패턴은 DDD(Domain-Driven Design)의 핵심 개념 중 하나이며, 객체지향의 장점을 최대한 활용합니다.특징도메인 객체에 책임 부여:객체가 자신의 상태를 관리하고, 관련된 비즈니스 로직을 수행합니다.예: Order 객체가 주문 생성, 주문 취소 등을 수행.비즈니스 로직의 캡슐화:데이터와 이를 처리하는 로직이 한 객체 내부에 캡슐화됩니다.엔티티 중심 설계:엔티티 객체가 단순히 데이터를 저장하는 역할만 하지 않고, 비즈니스 로직.. spring 2024. 11. 25. 자바 접근제어자 개념과 JPA @Embeddable에서 기본생성자에 proteced를 사용하는 이유 자바 접근 제어자자바에서 접근 제어자(Access Modifier)는 클래스, 메서드, 변수 등의 접근 범위를 결정하여 객체 지향 프로그래밍의 캡슐화(encapsulation)를 구현하는 데 사용됩니다. 자바는 네 가지 접근 제어자를 제공합니다: public, private, protected, 그리고 default(접근 제어자를 명시하지 않을 때).1. public설명: 모든 클래스에서 접근 가능합니다. 패키지 내부 또는 외부 어디서든 해당 멤버에 접근할 수 있습니다.접근 범위:같은 클래스: O같은 패키지: O하위 클래스(다른 패키지): O전체 외부 클래스: O예시:public class MyClass { public int myVariable; public void myMethod() { .. spring 2024. 11. 24. JPA기초 @Entity & @Id & @GeneratedValue & 영속성 컨텍스트 🔥 JPA란 무엇인가? 그리고 @Entity, @Id, @GeneratedValue의 역할JPA란?JPA(Java Persistence API)는 자바 애플리케이션에서 객체(클래스)와 관계형 데이터베이스 간의 매핑을 정의하고 관리하기 위한 표준 인터페이스입니다.역할:객체와 테이블 간의 매핑을 자동으로 처리 (ORM: Object-Relational Mapping).SQL 없이도 데이터베이스와 상호작용 가능.데이터베이스 독립적인 애플리케이션 개발 지원.구현체: Hibernate, EclipseLink, OpenJPA 등이 있으며, JPA는 이 구현체들을 위한 표준입니다.@Entity역할: 클래스가 JPA 엔터티임을 선언합니다. 데이터베이스 테이블과 매핑됩니다.@Entitypublic class User .. spring 2024. 11. 23. [Spring] Spring Bean 과 Servlet에 관한 질의응답 (ChatGPT) 🔥 스프링빈 / 서블릿❓ Question스프링빈과 서블릿은 둘다 객체이지 않나? 둘다 싱글톤이고 그럼 어떤 차이가 있지 📝 Answer스프링 빈(Spring Bean)과 서블릿(Servlet)은 모두 객체이며, 둘 다 일반적으로 싱글톤으로 관리됩니다. 하지만 이 둘 사이에는 몇 가지 중요한 차이점이 있습니다. 주요 차이점은 다음과 같습니다: 1. 역할 및 사용 목적스프링 빈(Spring Bean): 스프링 프레임워크에서 관리되는 객체로, 비즈니스 로직, 서비스, 데이터 접근 등의 다양한 역할을 수행합니다. 스프링 빈은 주로 애플리케이션의 전반적인 기능을 구성하는 데 사용됩니다. 빈은 애플리케이션 컨텍스트(Application Context)에 의해 생성되고 관리됩니다.서블릿(Servlet): 자바 E.. spring 2024. 9. 2. [Spring] 서블릿 컨테이너와 스프링 컨테이너에 관한 질의응답 (ChatGPT) 🔥 서블릿은 요청시마다 생성되는가?❓ Question여러 클라이언트가 동시에 요청을 한다면 쓰레드 여러 개가 각각 서블릿 객체를 하나씩 생성해서 동시에 service 메소드가 실행되기 때문에 속도가 빠르다.여러 요청이 A서블릿을 요청한다면 A서블릿이 여러개 생성되어 작동하는 것인가? init()이 여러번 호출되는 건가? 📝 Answer아니요, 서블릿(Servlet)은 여러 클라이언트의 요청을 처리할 때 서블릿 인스턴스를 여러 개 생성하지 않습니다. 서블릿 컨테이너(Servlet Container)는 특정 서블릿 클래스에 대해 단일 인스턴스만 생성하고, 이 인스턴스를 여러 클라이언트 요청에 대해 공유합니다. 따라서 다음과 같은 사항을 이해하는 것이 중요합니다:서블릿 인스턴스는 하나만 생성됩니다: 서블릿.. spring 2024. 8. 31. 외부 API 통신 이후 JSESSIONID 가 변경되어 발생한 문제 운영상의 자바 클래스 파일을 교체한 이후에 예상치 못한 에러가 발생했다.회원가입 페이지에서 이메일 중복체크 버튼을 누르면 aJax 통신을 통해 중복여부 확인 이후 alert창을 띄워주게 되어 있는데이 기능이 외부 API인 주소검색 API 통신을 하고 난 이후에는 정상적으로 동작하지 않았다. 게다가 결제 기능까지 동작하지 않았다. 개발자도구를 열어 이메일 중복체크 버튼을 눌러보았는데 누를때마다 JSON.parse할 때 JSON이 아닌 HTML 파일을 줬기 때문에 오류가 발생한 것이라는 에러 메세지를 볼 수 있었다. 개발자 도구의 application의 쿠키를 열어 보았고 JSESSIONID가 외부 API 통신 (주소검색 API) 이후 변경된 것을 확인할 수 있었고 바뀐 JSESSIONID로 aJax통신을 .. spring 2024. 6. 23. BasicErrorController에서 @RequestMapping("${server.error.path:${error.path:/error}}")의 의미 [`김영한의 스프링 MVC 2` : `API 예외처리` 강의를 듣던 중 생긴 궁금증] chatGPT 에게 질문해봤다. Question : @RequestMapping("${server.error.path:${error.path:/error}}") what mean? Answer : In the context of a Java web application using the Spring Framework, the @RequestMapping annotation is used to map HTTP requests to a specific method or controller in your application. Let's break down the expression you provided: ```java @.. spring 2024. 1. 8. 이전 1 다음