분류 전체보기 197

Java의 @NonNull vs @Nonnull vs @NotNull 정리

Java의 @NonNull vs @Nonnull vs @NotNull 정리Java에서 null을 방지하는 애너테이션을 사용할 때 @NonNull, @Nonnull, @NotNull 등 다양한 애너테이션이 있어서 헷갈릴 수 있습니다.이 글에서는 Lombok의 @NonNull, Jakarta(또는 javax)의 @Nonnull, Java Bean Validation의 @NotNull 차이점을 정리하고, 최신 환경에서 올바르게 사용하는 방법을 설명하겠습니다. 😊1. @NonNull (Lombok)📌 소속 패키지: lombok.NonNull📌 특징: Lombok이 제공하는 애너테이션으로, 자동으로 null 체크 코드가 삽입됩니다.✅ 주요 기능생성자나 메서드 매개변수에 null이 들어오지 않도록 강제합니다...

개발/Java 2025.03.20

Atomic Reference란?

1. AtomicReference란?안녕하세요! 오늘은 멀티스레드 환경에서 안전하게 객체 참조(Reference)를 관리하는 방법 중 하나인 AtomicReference에 대해 알아보려고 합니다.Java에서 멀티스레드 프로그래밍을 하다 보면, 여러 스레드가 동시에 객체의 상태를 변경할 수 있기 때문에 동기화 문제가 발생할 수 있습니다. 일반적으로 synchronized 키워드를 사용하거나, volatile을 활용하는 방법이 있지만, AtomicReference를 사용하면 락을 사용하지 않고도 객체의 참조를 안전하게 변경할 수 있습니다.그럼 AtomicReference가 무엇인지, 어떻게 활용할 수 있는지 함께 살펴볼까요? 🚀 📌 왜 필요할까?일반적으로 volatile 키워드를 사용하면 읽기와 쓰기는 ..

개발/Java 2025.03.18

ReflectionTestUtils를 이용한 private 필드와 메서드 단위테스트

ReflectionTestUtils를 이용한 private 필드와 메서드 단위테스트개요ReflectionTestUtils는 SpringFramework의 Test Context 에서 제공하는 유틸로, 프라이빗 필드나 메서드를 테스트할 수 있다.비공개 필드 값 설정비공개 필드 값 접근비공개 메서드 호출테스트를 작성하다보면 종종 단위테스트에서 위와 같은 접근이 필요할 때가 생기는데, 이 때 해당 클래스의 Private 메서드를 열지 않고 ReflectionTestUtils를 사용하면 접근할 수 있다.예시 코드예시 코드를 위해 직원 클래스를 만들어보자. 이 직원을 고용할 때 계약서에 이름과 계약 연봉을 작성한다.이름은 변경 불가능하니 private final을 붙이고, 연봉(annualSalary)는 매년 변..

개발/Spring 2024.12.02

Java 14 Record Keyword

1. record 키워드란?객체 간에 변경 불가능한 데이터를 전달할 경우 사용데이터베이스의 결과, 쿼리 결과, 서비스 정보 등 간단한 데이터를 보관하기 위해 클래스를 작성한다. 이 경우 많은 경우 변경 불가능한 데이터이다.record keyword에서 포함하는 것private 필드getterpublic 생성자equals 메서드hashCode 메서드toString 메서드2. 예시import java.util.Objects;public class Shop { private final String name; private final String address; public Shop(String name, String address) { this.name = name; ..

개발/Java 2024.11.22

[Lombok][Warning] @Builder will ignore the initializing expression entirely.

warning: @Builder will ignore the initializing expression entirely. If you want the initializing expression to serve as default, add @Builder. Default. If it is not supposed to be settable during building, make the field final. 빌드 시에 위 warning이 뜨는 케이스에 대해 알아보자. @Builder @Data @NoArgsConstructor public class Worker { private Long workerId; private WorkerType type = WorkerType.BASIC; } 만약 위와 같은 코드..

개발/Java 2023.01.15

[Lombok][Warning] 상속받은 클래스에 @Data만 사용하면 Warning이 뜨는 이유

프로젝트를 빌드할 때 종종 보이는 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. @Data 위 에러가 빌드할 때 종종 에러로 올라오는 것을 보았는데, IntelliJ를 통해 수정하면 @EqualsAndHashCode(callSuper=true) 어노테이션을 붙여주며 해결하지만, 왜 필요한지 한번 알아보자..

개발/Java 2023.01.14

[회고] 2022년 회고 및 2023년 로드맵 정리

[회고] 2022년 회고 및 2023년 로드맵 정리 2022년이 지나고 어느새 2023년이 다가왔다. 작년 연말에 남은 연차를 소진하려고 휴가를 몰아서 다녀왔더니 연말 회고 시간을 놓쳐 늦었지만 지금이라도 2022년 회고를 작성해 본다. 2022년 로드맵 작년 1월에 로드맵을 작성하고 시작했었는데, 연말에 어떤 것을 완료했는지 확인해보니 이것저것 한 것은 많지만 달성하지 못한 것도 있어서 내용을 정리해 보기로 했다. 2022년에 로드맵을 가시화해서 정리해본 것은 처음이었는데, 진행 중에 실제로 내가 얼마나 지척사항이 있는지 상태별로도 볼 수 있고, 속성별로 내가 어떤 것이 부족한지 파악하기 쉬워서 괜찮았었다. 2023년에도 로드맵을 작성하고 조금 더 구체화해 봐야겠다. 개발 1. 스터디 5개 이상 진행 ..

개인 2023.01.05

[Java] AssertJ 사용법

Introduction to AssertJ | Baeldung AssertJ is an open-source library for writing fluent and rich assertions in Java tests. This article focuses on tools available in the basic AssertJ-core module. www.baeldung.com 해당 게시글은 위 글을 번역 및 테스트한 글이다. 1. AssertJ란? Java Test를 다양하게 사용할 수 있는 오픈 소스 커뮤니티 중심 라이브러리 2. 소개 AssertJ의 클래스 및 유틸리티 메소드 Standard Java Java 8 Guava Joda Time Neo4J and Swing components 예시 코..

개발/Java 2022.10.23

[밀리의 서재][오디오북] 어이쿠, 오늘도 행복했네

밀리의 서재 오디오북 어이쿠, 오늘도 행복했네 행복이 노력으로 이뤄질까? 1년 365일, 매일 즐겁고 신나는 인생이 내 것이 될 수 있을까? 작가의 행복한 가치관과 일상이, 독자들에게도 퍼져나가는 듯한, 기분 좋은 책 책 소개 ‘행복한가’라는 질문에 선뜻 그렇다고 답하는 사람은 얼마나 될까. 세상에 떠도는 갖가지 행복 지침이 떠오르지만 실제 삶에 적용하기란 쉽지 않다. 행복한 사람은 따로 있는 게 아닐까도 싶다. 이정수는 한때 유명 개그맨이었지만 지금은 행사 사회자, 강사, 방송인. 딸 둘 키우는 아빠이자 주부이고, 자기 소유의 집도 없다. 특별히 행복한 조건을 타고나지도 않았다. 말하자면 평범하다. 그런 그가 6년 동안 적은 일상의 기록을 보니 행복한 순간의 연속이었다. 어떻게 매일 행복하냐는 질문을 ..

2022.10.22

[Spring] Spring Boot 버전별 차이점

Spring Boot 버전 별 차이점 (2.2 ~ 3.0) + Spring Cloud 1. 개요 최근 사내에서 Spring Boot 버전을 올리면 어떨까 해서 Spring Boot 버전 및 Spring Cloud 버전 차이점에 대해서 간단하게 알아보고 있다. 프로젝트마다 Spring Boot 사용하는 버전은 각각 다른데, 그러다 보니 가끔 코드를 이쪽저쪽 주워 가다 보면 다른 점들이 있어서 변경해서 사용하곤 했다. 구체적으로 어떤 차이점이 있는지 한번 알아보고 상위 버전으로 마이그레이션을 한다면 어떤 것들을 주의해야 하는지도 알아보자. 일단 사내에서 사용중인 제일 낮은 Spring Boot 버전은 2.1.X 버전 대라 해당 버전 이후 버전들을 확인했다. 2. Spring Boot와 Spring Frame..

개발/Spring 2022.10.22