spring8 스프링 MVC 학습목록 (2) 📝 학습목록 & GPT에게 물어본 질문 목록📙 1. 스프링 타입 컨버터1) Converter컨버터는 org.springframework.convert.converter.Converterpublic interface Conveter { T convert(S source);}인터페이스를 구현하여 만든다.2) ConversionService스프링은 개발 컨버터를 모아두고 그것을 묶어서 편리하게 사용할 수 있는 기능을 준다그것이 ConversionService 인터페이스package org.springframework.core.convert;import java.util.List;public interface ConversionService { boolean canConvert(Class source.. spring 2025. 1. 8. 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. 도메인 주도설계와 OOP의 관계에 대한 chatGPT와의 질의응답 ❓ 질의JPA 를 통한 개발을 진행하고 있는데 Member 클래스는 MemberRepository랑 MemberService를 이용해서 로직을 만들었다. (join, findById, findAll) 같은 것들을 근데 Item 클래스는 비즈니스 로직이 Item클래스 내부에 있는거 같아 public void addQuantity(int quantity) {this.stockQuantity += quantity} 이렇게 하는게 도메인 주도 설계라는데 왜 이렇게 하는거지? 객체지향하고도 관계가 있나? 도메인 주도 설계와 객체지향 설계1. 왜 비즈니스 로직을 도메인 객체(Item) 내부에 두는가?핵심 이유: 응집성(Cohesion)을 높이고 도메인 객체의 역할을 강화하기 위해객체는 데이터(stockQuan.. JPA 2024. 11. 24. 자바 접근제어자 개념과 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. 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 다음