본문 바로가기

Programming Language

(8)
[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..
[Programming Language] 타입스크립트(Typescript)란? 타입스크립트(Typescript)란? 개요 프로젝트에서 Typescript를 사용하기에 앞서, Typescript의 배경과 개념에 대해 알아본다. 목차 Typescript란? Typescript의 특징 소개 1. Typescript란? Typescript의 등장배경 Javascript는 객체들의 속성 변경이 너무 쉬운것이 장점이자 단점인 언어이다. 이로인해 테스트로 많은 버그를 찾아낸다고 하더라도 실제 배포 후 새로운 버그가 발견 될 가능성이 존재한다. 실제 프로그램의 규모가 더 커질수록 버그의 발생 가능성이 높아지므로 이러한 단점을 보완하기 위해 등장한 언어가 타입을 부여해주는 바로 Typescript이다. Typescript의 정의 Typescript를 검색하면 Javascript의 슈퍼셋인 오픈소스..
[변수 선언] var vs let vs const 변수 var, let, const 의 차이 개요 Javascript의 실행 컨텍스트에 대해 간단하게 언급하고 호이스팅을 통해 변수의 종류인 var, let, const의 차이를 이해한다. 목차 실행 컨텍스트란? 호이스팅이란? TDZ란? var vs let let vs const 소개 1. 실행 컨텍스트(Excution Context)란? 실행 컨텍스트(Excution Context) 정의 Javascript 엔진은 코드를 실행하기 위해 필요한 몇가지 정보들을 미리 알고 있어야 한다. 그러기 위해 코드를 실행하기 전에 실행 가능한 코드들을 형상화하고 구분하는 추상적 개념이 실행 컨텍스트이다. 풀어서 설명하자면, 코드가 실행가능하기 위해 필요한 환경이라고 할 수 있다. 실행에 필요한 정보 변수 객체(전역변수..
[Programming Language] 스크립트 언어(Script Language) vs 컴파일 언어(Compile Language) 스크립트 언어(Script Language) vs 컴파일 언어(Compile Language) 개요 스크립트 언어와 컴파일언어를 이해하고 그 차이를 알아본다. 목차 스크립트 언어(Script Language)란? 컴파일 언어(Compile Language)란? 스크립트 언어(Script Language) vs 컴파일 언어(Compile Language) 소개 1. 스크립트 언어(Script Language)란? 스크립트 언어(Script Language)의 정의 컴퓨터 프로그래밍 언어의 한 종류로, 스크립트 작성 기능을 지원하는 소프트웨어(애플리케이션)을 제어하는 역할을 하는 언어로 정의되어 있다. 수정이 자주 발생하는 덩치가 큰 소프트웨어에서 컴파일은 시간이 오래 소요되는 작업이므로, 수정이 빈번하게 ..