| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 프록시 패턴
- GoF 23
- Til
- 코드카타
- 빌더 패턴
- 김영한
- 계산기
- 이펙티브 자바
- 프로그래머스
- Spring Batch
- java
- 추상클래스
- lv1
- Effective Java
- 배치
- 템플릿 메서드 패턴
- 로드밸런서
- 스프링 배치
- 트러블슈팅
- 백엔드
- Spring
- 토스
- 스프링
- 스케줄러
- 디자인 패턴
- spring boot
- 성능 개선
- redis
- DB
- 자바
- Today
- Total
목록Spring (9)
김코딩
QueryDSL 초기 세팅은 스프링 부트 3.x 버전을 기준으로 세팅합니다.plugins { id 'java' id 'org.springframework.boot' version '3.5.3' id 'io.spring.dependency-management' version '1.1.7'}group = 'study'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}configurations { compileOnly { extendsFrom annotationProcessor }}repositories { mavenCentral..
나의 생각은 틀렸었다...오늘은 스프링 MVC에서 컨버터(Converter)와 포매터(Formatter)에 대해 알아보는 시간을 가졌습니다. 사실 지금까지 개발을 진행하면서 @RequestParam, @PathVariable 등의 파라미터를 입력할 때, 뒤에 타입만 지정하면 (예: @RequestParam Long id) 그냥 파라미터로 Long 타입을 넘겨주는거로 알고있었습니다. 하지만 이번에 타입 컨버터와 포매터에 대한 내용을 학습하면서, 실제로는 모든 HTTP 요청 파라미터 값이 문자(String)로 들어오고, 스프링 내에서 자동으로 타입 변환이 이루어지고 있다는 것을 알고 충격을 받았습니다.그래서 타입 변환을 왜 해주는거야?만약 스프링이 자동으로 타입 변환을 해주지 않는다면, 우리는 다음과 같이 ..
문제 상황이번 일정관리 API 과제를 수행하면서 사용자에게 조금 더 친화적인 예외를 보여주기 위해 커스텀 예외를 만들었습니다.CustomException을 추상 클래스로 만들고, 각 예외마다 getCode(), getStatus()를 구현하게 했으며,@RestControllerAdvice를 활용해 전역 예외 핸들러도 함께 구성했습니다.public abstract class CustomException extends RuntimeException { public CustomException(String message) { super(message); } public abstract String getCode(); // 에러 코드 public abstract HttpStat..
이번에 진행한 일정 관리 API 구현에서는로그인한 사용자만 다음과 같은 기능을 사용할 수 있도록 인증 로직을 구현했습니다. 회원 정보 조회, 수정, 삭제일정(게시물) 작성, 조회, 수정, 삭제세션 기반 로그인 인증을 통해, 사용자가 로그인한 경우에만 민감한 기능에 접근할 수 있도록 제한했는데요.그런데 개발을 진행하다 보니, 매번 컨트롤러의 민감한 API마다 세션을 꺼내서 확인하고, 예외를 던지는 인증 코드를 직접 구현하는 방식이 반복적이고 비효율적이라는 생각이 들었습니다."매번 똑같은 인증 로직, 자동으로 처리할 수는 없을까?" 이런 고민 끝에, 저는 서블릿 필터(Filter) 를 도입하게 되었습니다.서블릿 필터(Filter)란?서블릿 필터는 웹 애플리케이션에서 HTTP 요청과 응답을 가로채어 사전 작업..
오늘은 Spring에서 검증(Validation)에 대한 글을 작성하였습니다.처음에 @Valid에 대해 잘 모를 때는 이렇게 생각했습니다."음... DB에서도 NOT NULL 같은 걸로 검증을 해주는데,굳이 컨트롤러에서 또 검증을 해야 하나?" 하지만 이제 알아버렸습니다.. DB에서 막는 건 너무 늦었다는 사실을요.왜 @Valid가 필요할까?사용자가 입력한 값은 절대 신뢰할 수 없습니다.이름이 빈 채로 제출될 수 있고이메일이 이상한 형식일 수 있으며숫자여야 할 값이 문자로 들어올 수도 있습니다이런 값이 그대로 서비스 로직이나 DB로 들어가면?예외가 터지거나데이터 무결성이 깨지거나나중에 추적하기 어려운 버그로 이어집니다.그래서 우리는 가장 앞단에서 잘못된 입력을 걸러낼 필요가 있습니다.바로 그 역할을 하는..
오늘은 Spring의 핵심원리인 Spring Container와 Bean에 대해서 글을 작성해보려고 합니다.Spring Container란?Spring Container는 한마디로 "객체를 관리해주는 공간" 입니다. 먼저 Spring Container에 들어가기 전에 간단한 자바 예제를 확인해보겠습니다.기존 Java 방식의 객체 생성우리가 이전에 Java를 사용해서 클래스를 활용할 때는 new 키워드를 사용해 직접 객체를 생성해야 했습니다.public class DiscountService { private int fixDiscount = 1000; public void discountPrice(int amount) { System.out.println(amount - fi..