개발/Java 7

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

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

[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

[Java] 인터페이스(Interface)란?

인터페이스(interface)란? 인터페이스(Interface) 인터페이스가 무엇인지 알아보고 인터페이스의 요소와 인터페이스를 활용한 다형성 구현에 대해 알아보자. 인터페이스의 역할 인터페이스는 클라이언트 프로그램에 어떤 메서드를 제공하는지 알려주는 명세(specification) 또는 약속이다. 한 객체가 어떤 인터페이스의 타입이라 함은 그 인터페이스의 메서드를 구현했다는 의미이며 클라이언트 프로그램은 실제 구현내용을 몰라도 인터페이스의 정의만 알면 그 객체를 사용할 수 있다. 인터페이스를 구현해 놓은 다양한 객체를 사용하는 것을 다형성이라고 하는데 예를 들면, JDBC를 구현한 오라클, MySQL라이브러리 등에서 어떤 인터페이스에 대한 구현을 각각 했을 때, 사용자는 인터페이스의 정의만을 보고 JDB..

개발/Java 2020.07.14
1