Spring 73

[ Spring Boot ] 백엔드 컨트롤러 역할

▣ Controller의 역할Spring에서 Controller는클라이언트(브라우저, 앱, 프론트엔드)로부터 요청을 받음Service 계층을 호출해서 처리이후 응답(ResponseEntity, DTO, JSON 등)으로 돌려주는 계층입니다.즉, 컨트롤러는 외부 세계와 백엔드 서비스의 연결 창구 역할을 합니다.여기에서는파일 저장 : 업로드된 파일을 서버 로컬 디렉토리에 저장합니다. (saveFiles)썸네일 생성 : 이미지면 200x200 사이즈로 썸네일(s_파일명) 자동 생성합니다.파일 읽기 : 저장된 파일을 ResponseEntity 형태로 반환합니다. (getFile)파일 삭제 : 원본 + 썸네일 파일 모두 삭제합니다. (deleteFiles)즉 파일과 관련된 저수준 I/O 처리는 CustomFile..

[ Spring Boot ] 백엔드 테이블 선언 공부

해당 테이블에 대해 자세한 어노테이션 설명이 보고싶다면?1. Entity 구조 설명Product.java - 필드 선언@Entity@Table(name = "tbl_product")@Getter@Setter@ToString@Builder@AllArgsConstructor@NoArgsConstructorpublic class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long pno; // 상품 PK private String pname; // 상품명 private int price; // 가격 private String pdesc; // 상품 설명 privat..

Spring Boot 38강 - Product 리스트/상세 조회, 수정/삭제 서비스 계층 도입

이번 글에서는 상품 도메인에 대해 리포지토리 쿼리 최적화(EntityGraph, JPQL), 서비스 계층 도입, 그리고 컨트롤러 연동까지 진행했습니다.파일 업로드/썸네일과 결합된 상품의 등록·조회·수정·삭제(soft delete 포함) 흐름을 서비스 계층으로 정리하고, 테스트를 통해 검증합니다.📦 ProductRepositoryTests (읽기/수정/삭제 테스트)// 1) 즉시 로딩 없이 기본 findById로 조회@Test@Transactionalpublic void testRead() { Long pno = 1L; Optional result = productRepository.findById(pno); Product product = result.orElseThrow(); l..

Spring Boot 37강 - 상품 이미지 썸네일 생성과 파일 관리

이번 글에서는 상품 이미지 관리 기능을 구현했습니다.이미지 업로드 시 썸네일 자동 생성, 업로드된 파일의 조회 및 삭제 기능, 그리고 상품 이미지 정보를 저장할 엔티티 설계까지 진행했습니다.📦 build.gradle 수정 (썸네일 생성 라이브러리 추가)implementation 'net.coobird:thumbnailator:0.4.19'🔸 Thumbnailator 라이브러리는 이미지 파일의 썸네일을 쉽게 생성할 수 있도록 도와줍니다.📦 CustomFileUtil.java (파일 저장, 썸네일 생성, 조회, 삭제)public List saveFiles(List files) { if (files == null || files.isEmpty()) return List.of(); List up..

Spring Boot 36강 - 파일 업로드 기능 구현과 설정

이번 글에서는 Spring Boot 기반 프로젝트에서 파일 업로드 기능을 구현하는 방법을 학습했습니다.업로드할 파일을 받기 위한 DTO 작성부터, 서버에 파일을 저장하는 유틸리티 클래스, 관련 설정 및 컨트롤러 구현까지 실제 애플리케이션에서 많이 쓰이는 기능을 실습해보았습니다.📦 ProductDTO.java@Data@Builder@NoArgsConstructor@AllArgsConstructorpublic class ProductDTO { private Long tno; private String pname; private int price; private String pdesc; private boolean delflag; @Builder.Default priva..

Spring Boot 35강 - LocalDateFormatter를 활용한 날짜 포맷 처리

이번 글에서는 스프링에서 날짜 데이터를 LocalDate 타입으로 처리할 때 사용할 수 있는 커스텀 Formatter를 직접 구현해보았습니다.JSON 요청 및 응답에서 "yyyy-MM-dd" 형식으로 날짜를 일관되게 처리할 수 있도록 하여, API 서버와 프론트엔드 간의 날짜 파싱 문제를 해결하는 데 중요한 기반을 마련했습니다.📦 LocalDateFormatter.javapublic class LocalDateFormatter implements Formatter { @Override public String print(LocalDate object, Locale locale) { return DateTimeFormatter.ofPattern("yyyy-MM-dd").format..

Spring Boot 34강 - CustomServletConfig를 통한 전역 설정 구성

이번 강의에서는 Spring Boot 애플리케이션에서 전역 설정을 위한 WebMvcConfigurer 구현체를 직접 작성해보았습니다.CustomServletConfig 클래스를 통해 커스텀 날짜 포맷 설정과 CORS 정책 적용을 구성하여 프론트엔드(React 등)와의 연동 기반을 마련했습니다.📦 CustomServletConfig.java@Configurationpublic class CustomServletConfig implements WebMvcConfigurer { @Override public void addFormatters(FormatterRegistry registry) { registry.addFormatter(new LocalDateFormatter()); ..

Spring Boot 33강 - TodoController를 활용한 RESTful API 구현

Spring Boot에서 컨트롤러 계층을 이용하여 RESTful 방식의 API를 구현하는 방법을 학습했습니다. @RestController, @RequestMapping, @GetMapping, @PostMapping 등의 애너테이션을 활용하여 Todo 항목에 대한 CRUD 기능을 구성하는 방법을 다뤘습니다.📦 TodoController.java@RestController@RequiredArgsConstructor@Log4j2@RequestMapping("/api/todo")public class TodoController { public final TodoService service; @GetMapping("/{tno}") public TodoDTO get(@PathVariable("..

Spring Boot 32강 - Repository와 Service 계층 설계

이번 강의에서는 데이터베이스와 직접 연결되는 Repository 계층과비즈니스 로직을 처리하는 Service 계층을 설계하는 방법을 살펴봅니다.1. Repository 계층폴더 및 파일 구조mall_d69/└── src/ └── main/ └── java/ └── com/ └── example/ └── mall/ └── repository/ └── TodoRepository.javaTodoRepository 코드 예시package com.example.mall.repository;import com.example.mal..

반응형