본문 바로가기

Programming Language/Java

(5)
[Java] @Requiredargsconstructor 그리고 NPE 에러 [Spring Boot] @Requiredargsconstructor 그리고 NPE 에러 개요 프로젝트를 진행하고 규모가 커지면서 많아진 생성자들의 의존성을 편리하게 주입하게 위해 사용하였던 @Requiredargsconstructor 어노테이션과 이에 따라 발생한 NPE에 대해 같은 실수를 반복하지 않기 위해 글을 작성해본다. 소개 @Requiredargsconstructor는 무엇일까? Lombok을 통해 초기화 되지않은 final 필드 혹은 @NonNull이 붙은 필드에 대해, 생성자를 자동으로 생성하여 의존성을 주입해주는 어노테이션 어노테이션 사용에 대한 고찰 Spring Boot를 활용한 프로젝트 경험은 없었고, JAVA만을 사용한 프로젝트의 경험은 적었기에 Lombok을 통한 어노테이션의 사..
[JAVA] final 키워드에 대하여 [JAVA] final 키워드에 대하여 개요 JAVA의 final 키워드에 대해 알아보고, 미처 생각하지 못했던 final 배열 변수의 값의 수정에 대해서 고민해본다. 목차 내가 갖고 있던 final 키워드에 대한 잘못된 생각 final 키워드의 특징 소개 내가 알고있던 final 키워드 기존에는 final 키워드를 사용하면, 단순히 값을 재할당하지 못해 변경이 불가능하다고만 생각하였다. 그래서, 코드를 구현할 때 재사용을 하면 안되는 변수에 final 키워드를 사용해 왔었다. 하지만 코드를 구현하면서 List형의 변수에 요소들이 추가되는것을 보며 아래와 같은 의문을 갖게 되었다. "final 키워드는 정말 변수의 값이 재할당되는것을 막아줄까?" 대답을 해보자면, 변수의 값이 재할당 되는 것은 막아준다..
[JAVA] QueryDSL 이란? QueryDSL 이란? 개요 Spring Boot 프로젝트를 진행하던 도중, 직접 Query를 작성하게 되면서 사용하게 된 QueryDSL의 배경에 대하여 알아본다. 목차 QueryDSL 이란? QueryDSL의 등장배경, 그리고 JPQL의 한계 Q-Type Class 란? 소개 QueryDSL 이란? QueryDSL이란, 정적 타입을 이용한 Query생성에 특화된 언어(Domain Specific Language)의 특징을 갖는 라이브러리이다. Spring 등장 이후, 개발자는 비즈니스 로직에만 집중하게 되면서 JPA를 사용하게 되었고, JPA로 구현할 수 없는 복잡한 Query는 JPQL을 사용하였다. 그럼에도 불구하고, QueryDSL이 나온 배경은 무엇일까? QueryDSL의 등장배경 = JPQL..
[JAVA Junit] Error: No ParameterResolver registered for parameter 에러 원인 [JAVA Junit] Error: No ParameterResolver registered for parameter 에러 원인 개요 Junit Test를 하면서, No ParameterResolver registerd for parameter가 발생한 원인중 하나에 대해 기록한다. 소개 1. 문제 원인 @Test @ParameterizedTest @NullSource @ValueSource(strings = {"-1","-1000000"}) void 테스트(BigDecimal 테스트값) { Assertions.assertThrows(RuntimeException.class, () -> test.validateTest(테스트값) ); } 위의 코드는 ParameterizedTest와 ValueSource..
[JAVA] Java 함수 orElse vs orElseGet [JAVA] Java Method orElse vs orElseGet 개요 자바 Object 객체의 orElse Method와 orElseGet Method의 차이에 대해 알아본다. 목차 orElse() orElseGet() orElse vs orElseGet 비교예시 주의사항 소개 1. orElse() /** * If a value is present, returns the value, otherwise returns * {@code other}. * * @param other the value to be returned, if no value is present. * May be {@code null}. * @return the value, if present, otherwise {@code othe..