채야미의 코드레시피🍳

spring

STUDY/Spring
기본 개념Spring Web MVC 패턴Spring Web MVC는 Model-View-Controller(MVC) 패턴을 기반으로 한다.Model: 애플리케이션의 데이터와 비즈니스 로직 담당View: 사용자 인터페이스 담당. (JSP, Thymeleaf 등의 템플릿 엔진)Controller: 사용자 요청을 처리, 모델-뷰 연결 -> Dispatcher Servlet이 컨트롤러 호출Dispatcher Servlet이 때 Dispatcher Servlet은 Spring Web MVC 프레임워크의 핵심 구성 요소로서, 클라이언트의 모든 요청을 받아 적절한 컨트롤러(핸들러)를 찾아 전달하는 역할을 한다.이렇게 컨트롤러 구현을 단순화할 수 있으며, 비즈니스 로직에 집중하고  HTTP 요청 및 응답 처리 등에 대..
STUDY/Spring
Spring Data JPA 는 Spring 프레임워크에서 JPA를 더욱 쉽게 사용할 수 있도록 지원하는 모듈이다.이전 JPA/Hibernate에 대해 알아볼 때, EntityManager를 주입받아 사용했다.그러나 Spring Data JPA는 Repository 인터페이스를 통해 JPA를 추상화한다. 즉, Repository 인터페이스를 정의하면 이를 구현해 사용할 때 Spring Data JPA가 자동으로 JPA의 구현체를 생성한다는 거다.그래서 JPA 구현체(Hibernate등)을 따로 사용할 필요가 없다.주요 특징/장점Repository 인터페이스 제공 : 기본적인 CRUD 작업 쉽게 구현 -> 생산성 향상쿼리 메서드 기능메서드 이름 규칙을 따르면 별도의 쿼리 작성 없이도 필요한 쿼리를 자동으로..
Dev/Spring Boot
쇼핑몰 페이지는 기본적으로 로그인 여부와 상관 없이 이용 가능하지만, 특정 기능에는 로그인한 사용자의 정보가 필요하다. 문의 기능은 로그인 여부에 따라 정보 요청이 달라지고(비로그인시 이름,이메일을 입력), 문의 답변과 리뷰 작성은 로그인한 사용자만 가능하게 했다. 클라이언트에서 이를 가져오는 것은 보안에 취약하므로 내부에서 현재 로그인한 사용자 정보를 사용하는 것이 안전하다고 판단했다. 로그인 중인 사용자의 정보를 가져오는 방법에는 두 가지가 있다. SecurityContextHolder 클래스를 이용하는 방법, 그리고 우리는 로그인에 jwt를 사용하고 있으므로, 클라이언트에서 요청을 보낼 때 Header에서 보내는 accesstoken을 사용할 수 있다. Spring Security - 인증과 인가 ..
Dev/Spring Boot
쇼핑몰은 홈에서 상품 리스트를 보여준다. 새 상품별, 인기순 등 조건에 따라 리스트를 보여주려고 생각하니 페이징을 해야겠다는 생각을 하게 됐다. Spring Data JPA는 데이터베이스에서 데이터를 페이징하는 기능을 지원하기 때문에 이를 이용하기로 함! React와 함께 REST API로 구현 중이기 때문에, 클라이언트에서 URL 파라미터로 번호, 크기를 보내 페이징을 하도록 설계했다. 따라서 컨트롤러에서 URL 파라미터로 페이지 번호와 크기를 받고, 서비스 클래스에서 직접 Pageable(번호, 크기 담은 객체)을 생성해 서비스 메서드에서 URL 파라미터를 메서드로 받도록 구현했다. 페이지 번호 : 말 그대로 페이지 번호이다. 0부터 시작 크기 : 한 페이지 안에 보여줄 요소의 개수 기존 서비스 & ..
Dev/Spring Boot
관리자 페이지에서 판매할 상품을 등록한다. 엔티티와 함께 등록 로직도 다 구현했으니 이제 사진을 업로드 해야 한다. 우선 구조를 생각해보자. 사진은 서버에 저장되어야 하며, 경로를 DB에 저장해야 한다. -> MultipartFile 사용 : Spring의 파일 업로드 인터페이스 한 상품 객체에 여러 사진 경로가 저장될 수 있어야 한다. -> 상품 엔티티에 사진 경로 리스트 필드 리스트 필드는 OneToMany로 구현해야 한다. -> 썸네일 엔티티가 별개로 필요하다. 정리하면 이미지 업로드는 사진을 저장할 엔티티(테이블)을 만든다. MultipartFile 인터페이스로 구현한다. 상품과 썸네일은 일대다 (1:N) 관계 엔티티 설정 ProductThumbnail 엔티티 생성 사진을 저장할 엔티티를 생성한다..
Dev/Spring Boot
프로젝트 생성 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 https://start.spring.io 프로젝트 선택 Project: Gradle - Groovy Project Spring Boot: 3.x.x Language: Java Packaging: Jar Java: 17 또는 21 Project Metadata groupId: hello artifactId: hello-spring Dependencies: Spring Web, Thymeleaf 스프링 부트 3.0 이상 사용시 주의점 1. Java 17 이상 2. javax 패키지 이름을 jakarta로 변경 3. H2 데이터베이스를 2.1.214 버전 이상 사용 동작 확인 기본 메인 클래스 실행 스프링 부트 메인 실행 후 에러페이지..
ChaeYami
'spring' 태그의 글 목록