java

최근, Java 17 + Spring Boot 3.0.2 버전을 사용하는 프로젝트에서 Jackson과 관련된 이슈를 발견했다. 글 작성의 편의를 위해 아래에서는 회원가입 API를 구현해야 하는 상황을 가정한다. Jackson의 동작원리와 Introspection이라는 개념에 대해 알고 있어야 한다. - [Spring] Jackson 라이브러리 이해하기 - [Java] 처음 들어보는 java.beans.Introspector 1. 발단 회원가입에 필요한 정보를 request body로 받기 위해, 아래와 같이 Java 16부터 정식으로 도입된 record 타입으로 생성했다. record SignUpRequest( @NotEmpty String name @NotEmpty String address, @Not..
· Study/Java
현재 내가 참여 중인 프로젝트에서는 정적 팩토리 생성자를 이용하여 객체를 생성하는 경우가 많은데, 다른 프로젝트의 코드 리뷰를 하면서 보니 그러한 생성자 네이밍에도 뭔가 규칙이나 컨벤션이 있을 것 같았다. 물론 정적 팩토리 생성자의 장점 중 하나가 create, make 등 생성자 이름에 의미를 부여할 수 있다는 것이지만, 나는 흔히들 쓰는 of, from의 차이가 궁금했다. 우연히 개발자 단톡에서 아래와 같은 Java 공식 문서를 공유 받아, 간략하게 정리해보려고 한다. - [Oracle] Method Naming Conventions 어떤 문서냐? 위 문서에서는 Java의 Date-Time API에서 사용 중인 여러 클래스의 다양한 메소드 네이밍 컨벤션을 표로 정리했다. 문서를 해석해보자면, 그러한 ..
public enum UserStatus { NORMAL, DORMANT, SUSPENDED } 위와 같은 enum 클래스가 있다고 가정하자. UserStatus status = ...; switch(status) { case UserStatus.NORMAL: .... break; case UserStatus.SUSPENDED: .... break; } 위처럼 switch 문을 사용하면 "An enum switch case label must be the unqualified name of an enumeration constant" 라는 에러가 발생한다. 아래처럼 바꿔주면 에러는 사라진다. UserStatus status = ...; switch(status) { case NORMAL: .... bre..
· Study/Java
아래 사이트에 removeIf를 사용하는 다양한 방법이 소개되어있다. https://www.tabnine.com/code/java/methods/java.util.ArrayList/removeIf java.util.ArrayList.removeIf java code examples | Tabnine public boolean revokeApprovalsForUser(String userId, final String zoneId) { return store.removeIf(approval -> userId.equals(approval.getUserId())); www.tabnine.com
· Study/Java
드디어 원래 목적이었던 HashMap, HashSet에 대해 작성한다. 하지만, 글이 또다시 길어져 HashMap에 대해서만 먼저 작성한다.... 네이버 D2 블로그에서 HashMap에 관한 글을 발견하여 해당 글을 토대로 작성했다. 아래 두 글을 순서대로 읽고 오면 더욱 이해하기 쉽다. [Java][자료구조] HashMap, HashSet 이란? - (1) collections란? [Java][자료구조] HashMap, HashSet 이란? - (1) collections란? 얼마 전, Hash에 대한 글들을 작성하며 Java에서 Hash를 사용하는 HashMap, HashSet 이라는 자료구조를 알게 되었다. 여러 블로그와 사이트를 돌아보며 공부한 기록을 남긴다. collections 란? 'Hash..
· Study/Java
얼마 전, Hash에 대한 글들을 작성하며 Java에서 Hash를 사용하는 HashMap, HashSet 이라는 자료구조를 알게 되었다. 여러 블로그와 사이트를 돌아보며 공부한 기록을 남긴다. collections 란? 'HashMap, HashSet에 대해 작성한다며 웬 갑자기 collections?' 라고 생각할 수 있지만, collection 자료구조 중 하나인 Set에 대해 이해하기 위해서는 collections라는 녀석에 대해 알아야 한다. collection 자료구조? 위에서 잠깐 언급된 collection 자료구조란 무엇일까? collection이란 객체이며, 배열처럼 여러 원소를 담을 수 있는 자료구조다. 그래서 'collection', 한국어로는 '무리'를 뜻한다. collections ..
· Study/Java
드디어 JVM, JRE 글에 이어 마지막인 JDK에 대한 글을 작성한다. Eclipse를 설정하면서 생겼던 'JRE와 JDK가 대체 뭐지'에 대한 궁금증부터 시작하여 여기까지 오게 되었다. 복습 및 예습 - JVM은 자바 프로그램을 실행하는 Java Platform 구성요소이다 (관련 글 1, 2, 3). - JRE는 JVM을 생성하는 디스크 상의 한 부분이다 (관련 글). - JDK는 개발자들이 JVM과 JRE에 의해 실행되고 구동될 수 있는 Java 프로그램을 생성할 수 있게 해준다. JDK란? Java Development Kit의 줄임말로, 말 그대로 자바 개발 키트. 즉, 자바로 애플리케이션을 만들 때 필요한 플랫폼 구성 요소들을 갖고 있는 키트이다. JRE은 물론, 컴파일러, 디버거 등의 개발..
· Study/Java
자바 공부를 하다가 for-each문을 사용하는 여러 방법과 for문과의 속도 차이 등에 대해 찾다가, 좋은 사이트를 찾아서 저장하려고 남겨둔다. stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work How does the Java 'for each' loop work? Consider: List someList = new ArrayList(); // add "monkey", "donkey", "skeleton key" to someList for (String item : someList) { System.out.println(item); } What w... stackoverflow.com
· Study/Java
JRE에 대해 본격적으로 이야기하기 전에, 이전에 작성한 JVM에 대한 글을 먼저 보고 오는 것을 추천한다. JRE란? JRE란 Java Runtime Environment, 즉, 자바 런타임 환경이라는 뜻을 갖고 있다. 여기서 '런타임 환경'이란, 어떠한 소프트웨어를 실행하기 위한 또다른 소프트웨어다. 어떠한 소프트웨어, 그러니까 프로그램을 실행하기 위해 해당 프로그램을 구성하고 있는 클래스 파일을 로드하고, 메모리나 시스템 리소스 등에 대한 액세스를 확보한다. Java를 실행하기 위한 자바 런타임 환경(JRE)은 크게 아래 세 가지로 구성되어 있다. 자바 클래스 라이브러리(Java class libraries), 자바 클래스 로더(Java class loader), 자바 가상 머신(Java Virtu..
대흉근
'java' 태그의 글 목록