Java
스프링부트 validation 어노테이션 정리 메모장
@NotNull: 필드가 null이 아니어야 함을 지정합니다. @Null: 필드가 null이어야 함을 지정합니다. @Size(min=, max=): 문자열, 컬렉션, 배열 필드의 크기가 지정된 범위 내에 있어야 함을 지정합니다. min과 max 속성으로 최소, 최대 크기를 지정할 수 있습니다. @Min(value): 숫자 필드가 지정된 최소값 이상이어야 함을 지정합니다. @Max(value): 숫자 필드가 지정된 최대값 이하이어야 함을 지정합니다. @Positive: 숫자 필드가 양수이어야 함을 지정합니다. @PositiveOrZero: 숫자 필드가 0 또는 양수이어야 함을 지정합니다. @Negative: 숫자 필드가 음수이어야 함을 지정합니다. @NegativeOrZero: 숫자 필드가 0 또는 음수이..
RESTful API 설계 및 구현 가이드
서론 웹과 모바일 애플리케이션의 폭발적인 증가로 RESTful API의 중요성이 더욱 부각되고 있습니다. 이 글에서는 RESTful API의 기본 개념과 핵심 가이드라인을 소개하겠습니다. 1. RESTful API 소개 REST(Representational State Transfer)는 자원을 표현하고 그 자원에 대한 상태를 주고받는 아키텍처 스타일입니다. RESTful API는 이러한 아키텍처 스타일을 따르며, 자원을 URI로 표현하고 HTTP 메소드를 통해 자원에 대한 행위를 정의합니다. 2. URI 설계 URI는 명사로 구성되어야 합니다. 동사를 사용하지 않고, 자원을 나타냅니다. 계층 구조를 활용하여 각 리소스에 대한 관계를 나타내고 가독성을 높입니다. 3. HTTP 메소드 활용 URI는 명사로..
JUL (java.util.logging) vs Log4j2 vs SLfj2 비교하기.
java.util.logging, log4j2, 그리고 Slf4j는 Java 언어에서 로깅을 위한 여러 라이브러리 및 프레임워크입니다. ● java.util.logging (JUL) Java 표준 로깅 API: JDK에 내장된 기본 로깅 프레임워크입니다. 장점: 표준 Java API이기 때문에 JDK에 내장되어 있어 추가적인 라이브러리의 의존성이 없습니다. 자바 표준이므로 Java SE 환경에서 쉽게 사용할 수 있습니다. 단점: 유연성이 부족하며, 고급 로깅 설정이 제한적입니다. 포맷팅과 필터링 등의 기능이 다른 라이브러리에 비해 부족합니다. ● Log4j2 강력하고 유연한 로깅 프레임워크: Apache Software Foundation에서 개발한 로깅 라이브러리로, 많은 고급 기능을 제공합니다. 장점..
[Spring Boot] Spring Cloud GateWay 필터 추가
스프링 부트에서는 Cloud 환경을 위한 Gateway 프레임워크를 제공한다. mvn repository에 Maven이나 Gradle에 Dependency를 추가할 수 있도록 검색을 제공한다. Maven Repository: org.springframework.cloud » spring-cloud-starter-gateway mvnrepository.com 이 글에서는 PRE, POST 필터를 추가하는 방법을 제시한다. 제공되는 Filter의 종류 org.springframework.cloud.gateway에서 기본적으로 제공하는 필터는 아래와 같이 수십 개의 필터를 제공한다. YML 설정. spring: application: name: apigateway-service cloud: gateway: d..
[Spring Boot] Filter
스프링에서는 애플리케이션에서 공통적인 처리를 위해 활용할 수 있도록 제공하는 것이 3가지가 있다. Filter Interceptor AOP 위 3가지의 공통적인 특징은 어떤 행동이나 처리를 하기 전에 전처리 작업을 하거나, 행동이나 처리를 한 후에 후처리 작업을 할 수 있도록 제공한다는 것이다. Spring Life Cycle과 DelegatingFilterProxy 아래의 그림은 스프링의 라이프 사이클을 잘 설명해주고 있는 그림이다. 필터는 스프링 영역 밖에서 실행된다는 것을 주의하자 스프링 영역 밖이라는 뜻은 필터를 Bean으로 주입도 할 수 없고 Bean객체를 주입(DI) 받을 수도 없다. DelegatingFilterProxy가 등장하기 전에는... 스프링 세상에 DelegatingFilterPr..
[SpringBoot] JPA Entity Listener 엔티티 이벤트 리스너
YOPLE서비스를 개발하면서 Entity가 저장될 때 또는 조회할 때의 이벤트를 캐치하여 처리를 해야 하는 이슈가 발생했다. 그러던 중 JPA에서 아주 편안한 기능을 제공한다는것을 알게 되었고 포스트로 기록을 남긴다. JPA에서는 Entity에 이벤트가 발생할 때 특정 처리를 할 수 있게 지원한다. Entity Listener Chapter 6. Entity listeners and Callback methods @PostPersistExecuted after the entity manager persist operation is actually executed or cascaded. This call is invoked after the database INSERT is executed. docs.jb..
[SpringBoot] Exception Handler 예외를 통합관리 하자.!!!
요즘 YOPLE 서비스를 개발하면서 Exception을 핸들링해야 하는 일이 생겼다. 스프링 구조상 컨트롤러-서비스-JDBC lib를 통해 API가 처리되면서 Controller단에서 Throw 되는 Exception을 핸들링하고자 한다. 기존 예외 처리 방식은 trty-catch를 각 메소드별로 설정해주어 처리했다. 각 Exception별로 처리하는 중복 코드가 try-catch별로 생성되어 코드가 방대해지고 복잡해졌다..... 그래서 찾아보니 @ControllerAdvice와 @ExceptionHandler 두 어노테이션으로 Exception을 전역으로 처리할 수 있다고 한다.!!! @ExceptionHandler SpringFramwork Docs에서 @ExceptionHandler는 아래와 같이 ..
[SpringBoot] Log4j2 기본 사용법
Log4j2 란? log4j(Log for Java)란 이전 버전인 Log4j 1.x에 비해 크게 개선된 Log4j로의 업그레이드이며 Logback 아키텍처의 몇 가지 고유한 문제를 수정하면서 Logback에서 사용할 수 있는 많은 개선 사항을 제공하는 대표적인 자바 로깅 프레임워크이다. og4j 2.13.0 이상에는 Java 8이 필요합니다. 버전 2.4~2.12.1에는 Java 7이 필요합니다(Log4j 팀은 더 이상 Java 7을 지원하지 않습니다). 일부 기능에는 선택적 종속성이 필요합니다. 이러한 기능에 대한 설명서는 필요한 종속성을 지정합니다. ## 중요: 보안 취약점 CVE-2021-44832 요약: Apache Log4j2는 공격자가 구성을 제어할 때 JDBC Appender를 통해 RCE..