오늘은 Spring Data JPA에서 제공하는 아주 유용한 기능인 Auditing에 대해 알아보려고 합니다. 데이터베이스 테이블에 누가, 언제 데이터를 생성하거나 수정했는지 자동으로 기록하고 싶었던 적이 있으신가요? 이번 글을 읽으면 Spring Data JPA Auditing의 개념과 설정 방법, 실제 사용 예제를 통해 이러한 정보를 어떻게 쉽게 관리할 수 있는지 알 수 있어요. 또한 초보자부터 고급 사용자까지 모두 활용할 수 있는 실용적인 팁도 함께 소개해드립니다. 참고로 이 글을 정리하는 이유는 면접에서 이 기능을 이야기 했으면 좋았지 않을까 하는 생각에 작성한다.엔티티에 수정자가 추가된다고 하면 어떻게 하는게 좋을까요? 라는 질문에 엔티티에 곧바로 추가한다라는 답변을 했는데 그 답변보다는 Aud..
오늘은 Spring Boot에서 자주 사용하는 @RequestBody와 Jackson 라이브러리의 내부 동작에 대해 이야기해보려고 합니다. 특히 DTO에서 Setter가 필요한지, 아닌지에 대한 의문을 파헤쳐보겠습니다. (사실 면접에서 나온 질문인데 제대로 대답을 못했습니다..) 구글링 검색해보니 관련글이 이미 여러개 있길래 좀 읽었습니다.궁금증: Setter가 없어도 값이 들어오는 이유Request DTO 예시@Getter@Setter // 주목! Setter가 있습니다public class LoginRequestDto { @NotBlank private String username; @NotBlank private String password;} Controller@Po..

로깅은 애플리케이션 문제 해결의 오랜 역사와 관찰 가능성의 세 가지 주요 요소(메트릭, 트레이스와 함께) 중 하나입니다. 운영 환경에서 아무런 정보 없이 문제를 해결하기는 어려우며, 장애가 발생했을 때 개발자들은 로그 파일이 있는 것을 반가워합니다. 로그는 주로 사람이 읽을 수 있는 형식으로 작성됩니다. 구조화된 로깅은 로그 출력을 잘 정의된, 종종 기계가 읽을 수 있는 형식으로 작성하는 기술입니다. 이러한 형식은 로그 관리 시스템에 입력되어 강력한 검색 및 분석 기능을 가능하게 합니다. 구조화된 로깅에 가장 일반적으로 사용되는 형식 중 하나는 JSON입니다. Spring Boot 3.4에서는 기본적으로 구조화된 로깅을 지원합니다. Elastic Common Schema (ECS)와 Logstash 형식..
스프링부트에서 테스트 코드를 작성할 때 자주 사용하는 @Mock과 @MockBean의 차이점. 이 두 어노테이션은 모킹(Mocking)을 통해 테스트를 효율적으로 작성할 수 있게 해주지만, 용도와 환경이 다르다. 또한, 리포지토리, 서비스 레이어, 컨트롤러 테스트 시 어떤 상황에서 어떤 어노테이션을 사용하는 것이 좋을지 작성.@Mock@Mock은 Mockito 프레임워크에서 제공하는 어노테이션이다. 특정 클래스의 모킹된 객체를 생성하며, 이 객체는 스프링 컨텍스트와는 무관하게 독립적으로 동작한다.@MockBean@MockBean은 스프링 부트에서 제공하는 어노테이션이다. 스프링 애플리케이션 컨텍스트에 모킹된 빈을 추가하고, 실제 스프링 빈 대신 모킹된 빈을 주입한다. 주로 통합 테스트 환경에서 사용된다...
spring.threads.virtual.enabled=true spring docs에서는 애플리케이션에 이 옵션을 켜기 전에 공식 Java 가상 스레드 설명서를 읽어보시기 바랍니다 라고 쓰여져있다. WarningOne side effect of virtual threads is that they are daemon threads. A JVM will exit if all of its threads are daemon threads. This behavior can be a problem when you rely on @Scheduled beans, for example, to keep your application alive. If you use virtual threads, the scheduler ..
Spring Framework에서 AOP(Aspect-Oriented Programming)는 강력한 트랜잭션 관리 기능을 제공합니다. 이 기능은 다양한 애플리케이션에서 트랜잭션을 효율적으로 관리할 수 있게 해주지만, 때때로 예상치 못한 문제가 발생하기도 합니다. 이 글에서는 Spring Data JPA를 사용하면서 자주 마주치는 self-invocation 문제와 그 배경에 대해 설명하고, Spring의 AOP가 어떻게 트랜잭션 관리에 적용되는지 구체적으로 살펴보겠습니다. AOP와 트랜잭션 관리란? Spring Framework에서 AOP(Aspect-Oriented Programming)는 다양한 곳에서 사용되는 로직을 한 곳에 모아 관리할 수 있게 해주는 프로그래밍 기법입니다. 예를 들어, 보안, ..
에러스택 Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class com.example.demo.controller.ResourceController$$Lambda$821/0x000000011a429db0] with preset Content-Type 'application/octet-stream'] 환경 spring boot 2.4.x 외부 파일을 다운로드 하는 Controller에서 에러 발생 문제가 된 코드 @RestController public class ResourceController { @GetMapping("/resource") public ResponseEntit..
일반적으로 enum 클래스는 마셜링할 때 enum 상수 이름 그대로 변경된다. 마셔링 과정에서 enum 상수를 변경할 때 toString() 메서드를 사용하고, 이 메서드가 enum 상수 이름을 리턴하기 때문이다. 이런 방식은 REST-API 응답을 유연하게 설계할 수 없고, REST-API 설계에 따라 코드에도 영향을 주므로 유연한 프로그래밍을 할 수 없다. 그래서 응답 값과 enum 상수 값은 따로 분리하면 좋다. ex) 애플리케이션 에서는 SINGLE 이라는 enum 상수값이지만 클라이언트에게 응답할 때는 "single"이라는 문자열 값을 리턴. public enum HotelRoomType { SINGLE("single"), DOUBLE("double"), TRIPLE("triple"), QUAD..
- Total
- Today
- Yesterday
- springboot
- svn
- claude
- Bash tab
- maven
- Kotlin
- JavaScript
- Linux
- input
- LocalDateTime
- mybatis config
- docker
- intellij
- LocalDate
- config-location
- oracle
- 오라클
- localtime
- rocky
- Spring
- Spring Security
- 베리 심플
- elasticsearch
- Mac
- k8s
- window
- 북리뷰
- mybatis
- jQuery
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |