Spring

DEV/Spring

[Spring] GlobalExceptionHandler 만들기 (with. Kotlin)

0.  개요 전역 예외처리에 관한 핸들러를 만들어서 관리하는 기능을 코틀린 베이스로 만들려 한다.이전 RestControllerAdvice, ControllerAdvice 포스팅하면서 말했던 내용을 베이스로 하기 때문에 조금 더 상세한 내용은 아래 링크 참고 바란다. * 이전 포스팅2023.07.12 - [DEV/Spring] - [Spring] Exception Handler (with. Spring Data Rest) 1. 구현구현하고자 하는 코드 구성은 아래와 같다.Class (or File)DescriptionErrorCode에러 정의를 담은 Enum 클래스.DomainException예외 클래스, RuntimeException 상속.GlobalRestExceptionHandler예외를 클래스 별..

DEV/Spring

[Spring] WebClient 란?

Spring 에서 외부 API를 요청할 때, 사용하는 라이브러리들은 RestTemplate, WebClient, OpenFeign 이 있다. 이번에는 비동기 방식을 지원하는 WebClient에 대해 알아보자. 1. WebClient 란? WebClient는 Spring WebFlux에 포함되어 있는 HTTP 요청 라이브러리로, Reactor 기반의 API 를 가지고있다. 반응형 라이브러리를 참조하면 스레드나 동시성을 처리할 필요 없이 비동기 로직의 선언적 구성을 가능하게 하고 완전한 논 블로킹으로 구현되어있다. 물론 동기 방식으로도 사용이 가능하기에 사용자의 구현에 따라 동기/비동기 선택이 가능하다. 2. 구성 WebClient를 생성하는 방법은, WebClient.create() WebClient.bu..

DEV/Spring

[Spring] Spring Data Rest 란?

이번에 갠플 진행하면서, 매번 만들던 Controller, Service, Repository 가 아닌 다른 형태로 진행해보기로 하였다. Spring Data Rest를 이용한 방법인데, 설정과 어노테이션을 이용해서 Entity와 Repository 만으로 API 를 구성하며 추가적인 Http Request Path 설정과 반환 데이터 구조를 만들지 않아도 간단하게 사용이 가능하다. 1. Data Rest ? Spring.io 에서는 Spring Data Rest 를 다음과 같이 정의하고 있다. REST 웹 서비스는 웹에서 애플리케이션 통합을 위한 최고의 수단이 되었습니다. 핵심에서 REST는 클라이언트가 상호 작용하는 리소스로 구성된 시스템을 정의합니다. 이러한 리소스는 하이퍼미디어 기반 방식으로 구현..

DEV/DataBase

[DataBase] H2 Database 설치 (MacOS)

이번에 공부 겸 테스트 데이터베이스를 매번 설치하는게 번거로워서 가볍게 사용할 DB로 H2 Database 를 설치하기로 하였다. H2 ? H2는 Java로 작성된 관계형 데이터베이스 관리시스템이다. 자바 애플리케이션에 임베드하거나 클라이언트-서버 모드에서 구동할 수 있다. SQL 표준의 일부가 지원되고, 주 프로그래밍 APi는 SQL과 JDBC이지만 데이터베이스 또한 PostgreSQL 서버처럼 동작하기 위해 PostrgreSQL ODBC를 사용하여 지원한다. 인메모리 테이블과 디스크 기반 테이블을 둘 다 생성할 수 있다. Download 아래 있는 H2 사이트에서 다운로드가 가능하다. 나는 맥북을 사용하고 있어서 'Platform-Independent.Zip'을 설치하였다. H2 Download Li..

DEV/ErorrBox

[Error] @EqualsAndHashCode(callSuper=false)

JPA 사용 중 복합키를 사용할 일이 있어서 @IdClass에 사용할 PK클래스를 만들고 엔티티에 @EqualsAndHashCode 롬복 어노테이션을 적용하였다. 테스트 코드 실행 시, 아래와 같은 warning 메세지가 나왔다. warning: Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type. 대강 해석하자면 'equals/hashCode 를 만드는데 부모클래스를 call 하지..

DEV/ErorrBox

[Error] LoggerFactory is not a Logback LoggerContext but Logback is on the classpath.

개발 도중 Slf4j 로깅을 적용하는 도중 에러가 발생하였다. 캡쳐한 부분의 로그를 보면 아래와 같다. ERROR LOG Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.helpers.NOPLoggerFactory loaded from file:/Users/mk1/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.25/da76ca59f6a57ee3102..

DEV/Spring

[JPA] Repository 인터페이스

Why?JPA Repository 를 만들때 자료를 찾아보면 사용되는 인터페이스가 JpaRepository, CRUDRepository 이 두개가 가장 많이 나와 어떤 차이점이 있는지 알아보았다. 아래 캡쳐된 프로젝트Spring boot 3.0.4  What?ChatGpt 에게 물어봤을 때 다음과 같이 답변해주었다.JpaRepositoryJpaRepository는 CRUDRepository를 상속하며, 다양한 데이터 액세스 기능을 제공하는 인터페이스입니다. JpaRepository는 단순한 CRUD 연산뿐만 아니라, 페이징, 정렬, Native 쿼리, 벌크 연산 등을 지원합니다. JpaRepository를 사용하면 더욱 복잡한 데이터 조작을 할 수 있으며, 다양한 데이터 액세스 기능을 제공하여 기능 확장..

DEV/Spring

[Spring] Spring Framework 란?

Framwork 란? 위키 백과에는 프레임워크를 '컴퓨터 프로그래밍에서 소프트웨어 프레임워크(Software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다.' 라고 정의 되어 있습니다. 제 나름대로 정의 해보자면 '현대 사회에 법이라는 큰 틀 안에 살아가고 있고 최소한 지켜야하는 규칙 또는 규약을 가지고 각자 원하는 삶을 살아간다' 라는 관점에서 보면 법 또한 프레임워크에 해당합니다. 이처럼 큰 틀 안에 규칙을 정해두고 그 안에서 주어진 기능들을 활용해 원하는 것을 만든다고 생각하면 됩니다. (API의 url path는 여기다 작성해! 하지만 다른 path와 겹치면 안돼! 라는 것처럼) 라이브러리(Library)와 혼동하기 쉬울 수 있는데, 흔히 라이브러리를 도구..

DEV/Spring

[JPA] Unique 제약 조건

데이터베이스 설계 시, 단일로 들어가야하는 조건을 넣어야 하는 경우 유니크 제약조건을 넣는다.예를 들어 회원의 아이디 또는 이메일과 같이 로그인 시 중복되지 않아야하는 경우를 말한다. JPA 코드 상에서 단일 조건의 경우@Entity@Table(name = "UNIQUE_ENTITY")@NoArgsConstructorpublic class UniqueEntity { @Id @GeneratedValue(strategy= GenerationType.IDENTITY) private Long id; @Column(name = "unique_one", unique = true) private Long uniqueOne; @Column(name = "unique_two") pr..

l-eazzy
'Spring' 태그의 글 목록