java

[Spring] RestAssured로 API 테스트 진행하기 0. 들어가기 전에 API를 테스트하기 위해 RestAssured를 사용하게 되었는데, ''응답 값을 어떻게 테스트할까?' 하는 생각으로 사용 방법을 찾아봤습니다. 테스트 방식으로 REST-assured에서 나온 것처럼 then()절 뒤에 body()를 사용해서 테스트하는 방식과 JsonPath를 사용하는 방식이 있습니다. body()를 사용하는 방식은 한 메서드의 길이가 길어지고 주로 사용하는 given / when / then 패턴을 사용하기 어렵습니다.. 그래서 이 글에서는 JsonPath를 사용하여 테스트를 진행하는 방식을 소개하겠습니다. 1. RestAssured란? REST 기반 서비스를 간단히 테스트하기 위한 Java DSL(Do..
[Java] EnumMap이란? 0. 들어가기 전에 체스 미션을 진행하면서, HashMap을 EnumMap으로 리팩토링을 해봤습니다. 처음 쓰는거라 어떤 역할을 하는지 몰라 정리해 봅니다. 1. EnumMap 이란? Enum 타입의 Key를 갖는 특화된 맵 EnumMap은 하나의 Enum을 Key로 갖는다. 또한 HashMap과는 달리 HashMap을 사용하지 않고 Array로 구현이 되어서 효율적이다. 2. EnumMap의 특징 2.1 속도 public class EnumMap extends AbstractMap implements java.io.Serializable, Cloneable { private final Class keyType; private transient K[] keyUniverse..
[Java] LinkedHashMap의 방어적 복사 0. 들어가기전에 이번 블랙잭 미션을 하면서 결과 출력을 할 때, LinkedHashMap을 방어적 복사를 하려고 Map.copyOf()를 쓴 적이 있었다. 하지만, 이 방법은 기존 순서를 유지하지 못했다. 이 글을 통해 순서가 깨지는 이유와 방어적 복사를 하는 방법을 알아보자. 1. LinkedHashMap이란? Hash table and linked list implementation of the Map interface, with predictable iteration order. This implementation differs from HashMap in that it maintains a doubly-linked list running thr..
[Java] 롬복의 원리 1. Lombok(롬복)이란? 컴파일 시점에 바이트코드를 조작하여 원하는 코드를 주입해주는 라이브러리 스프링 필수 템 공개된 API가 아닌 Compiler 내부 class를 사용하여 코드를 수정한다는 문제점이 있음 어노테이션 형식으로 동작 ex) @Getter, @Setter, @RequiredArgsConstructor 2. 동작 과정 자바 컴파일러(javac)가 소스파일을 파싱하여 AST 트리를 만듦 롬복은 AnnotationrProcessor에 따라서 AST 트리를 동적으로 수정하고 새 소스코드와 바이트 코드를 분석 및 생성 자바 컴파일러는 수정된 AST를 기반으로 바이트 코드를 생성 3. Annotation Processor 자바 컴파일러 플러그인의 일종 어노테이션에 대한..
Chapter11 컬렉션 프레임웍 Collections Framework 1. 컬렉션 프레임웍(Collections Framework) 컬렉션(collection) : 여러 객체(데이터)를 모아 놓은 것을 의미 프레임웍(framework) : 표준화, 정형화된 체계적인 프로그래밍 방식, 작업 생산성 증가, 유지 보수 증가. 라이브러리(library) : 다른 사람들이 만들어 놓은 기능들을 모아둔 것. 컬렉션 프레임웍(collection framework) : 다수의 객체를 다루기 위한 표준화된 프로그래밍 방식, 다양한 클래스를 제공(java.util패키지에 포함) 컬렉션 클래스(collection class) : 다수의 데이터를 저장할 수 있는 클래스 1.1 컬렉션 프렘웍의 핵심 인터페이스 List : ..
Chapter10 날짜와 시간 & 형식화(date, time and formatting) 1. 날짜와 시간 1.1 Calendar와 Date java.util.Date : 날짜와 시간을 다룰 목적으로 만들어진 클래스 java.util.Calendar : Date클래스를 개선한 클래스 java.time패키지 : Date와 Calendar의 단점을 개선 1.1.1 Date와 Calendar간의 변환 Calendar를 Date로 변환 Calendar cal = Calendar.getInstance(); ... Date d = new Date(cal.getTimeInMillis()); Date를 Calendar로 변환 Date d = new Date(); ... Calendar cal = Calendar.get..
1. java.lang패키지 1.1 Object클래스 모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다. 이 중 notify(), wait() 등은 쓰레드와 관련된 메서드이다. 1.1.1 equals(Object obj) 객체 자신과 주어진 객체를 비교하여, 같으면 true, 다르면 false를 반환 객체의 주소를 비교(참조변수 값 비교)X → 내용을 비교함 1.1.2 hashCode() 객체의 해시코드(hash code, 객체의 지문)를 반환하는 메서드 Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환. equals()를 오버라이딩하면, 두 객체의 hashCode()는 같아야 한다. System.identityHashCode(Object obj)는 Object..
1. 예외 처리(exception handling) 1.1 프로그램 오류 컴파일 에러 : 컴파일 시에 발생하는 에러 런타임 에러 : 실행 시에 발생하는 에러(프로그램 종료) 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류(메모리부족(OutOfMemoryError), 스택오버플로우(StackOverflowError)) 예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것(프로그램 종료x) 정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것 목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하기 위해 1.2 예외 클래스의 계층구조 Exception..
쿠엔크
'java' 태그의 글 목록