서버에서 Get Parameter를 받을때 쿼리로 받게 된다. 예로들면 아래처럼 @PathVariable을 사용하는 경우.. @GetMapping(value = "/test/{path}") public String testGetMethod(@PathVariable(name = "path") String path) { return response.ok(path); } 하지만 이 방법으로는 파라미터를 받을때 URL에 특수문자가 포함되어 있을 경우 특수문자 뒤는 잘리게 된다. 사용불가능한 특수문자는 +와 & 이다. +와 &는 Get 요청에서 지정된 예약 문자이기 때문에 사용할 수 없다. @GetMapping(value = "/test/{path}") public String testGetMethod(@Requ..
한줄 주석 : Command + / 여러줄(블럭) 주석 : Command + Option + / 코드 라인 복사 : Command + D 생성자, Getter, Setter, hashCode, equals, toString 자동완성 : Command + N 라인 삭제 : Command + Backspace 자동 완성 : Control + Space 문법 단위로 코드 이동 : Command + Shift + 화살표(상,하) 한줄 단위로 코드 이동 : Option + Shift + 화살표(상,하) 쓰지 않는 import 삭제 : Control + Option + O import 하기 : Option + Enter 메서드 및 클래스로 이동 : Command + 메서드 및 클래스 클릭 실행 : Control +..
간단한 API 테스트 중 에러 발생. 에러 메세지는 아래와 같다. ERROR [DirectJDKLog.java - log] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.Long'. Check configuration ..
테스트 도중 런타임 에러가 발생했다. IllegalArgumentException 에러니까 잘못 된 인자가 넘어갔다는 거다. 아래는 에러 메세지다. 읽어보면 해당 Class에서 선언된 JSON의 필드 중에 중복된 값이 있다고 한다. 친절하게 중복 선언된 필드 이름과 클래스 경로까지 알려준다. Class net.com.demo.domain.Entity declares multiple JSON fields named 'regdate'; conflict is caused by fields net.com.demo.domain.Entity #regdate and net.com.demo.domain.CommonEntity#regdate 본인의 경우는 상속된 부모 CommonEntity라는 클래스에 regdate가 ..
Timestamp 자료형 데이터를 LocalDateTime으로 받아 출력하면 날짜가 원하는 format으로 나타나지 않고 아래와 같이 응답받는 문제를 발견했다. {"regdate": { "date": { "year": 2023, "month": 1, "day": 9 }, "time": { "hour": 14, "minute": 41, "second": 39, "nano": 0 } } } 날짜 데이터를 timestamp 형식으로 변형하기 위해 직렬화/역직렬화가 쉬운 Gson을 사용하기로 했다. 우선 Gson 모듈을 추가해준다. implementation group: 'com.google.code.gson', name: 'gson', version: '2.10.1' implementation group: '..
스프링 부트 Run을 하면 콘솔에 Spring 이라는 문구와 버전이 나타난다. 본인은 각 프로젝트 이름으로 배너를 만들어서 사용하고 있다. 1. banner.txt 파일 생성 우선 src/main/resource 경로 아래에 banner.txt라는 파일을 생성한다. 2. 배너 생성 사이트 접속 https://patorjk.com/software/taag Text to ASCII Art Generator (TAAG) patorjk.com 3. 폰트, 글씨 크기, 적용할 텍스트를 입력하고 아래에 생성된 배너 글씨를 복사해서 banner.txt에 붙여 넣는다. Font : 배너에 적용할 글씨체 Character Width : 글씨체 너비 Character Height : 글씨체 높이 입력란 : 원하는 메세지 ..
IntelliJ 프로젝트 rename 오류 발생, can't rename root module 경고 창이 떴을 경우 프로젝트 name 변경 방법 1. 상단 메뉴의 File > Project Structure > Project Settings > Project > Name 란에 변경할 이름 입력 2. setting.gradle에서 rootProject.name을 변경할 이름으로 수정 후 적용 3. IntelliJ 종료 후 프로젝트 디렉토리로 이동하여 이름 변경 > IntelliJ 재실행
zsh을 사용할 때 유용한 옵션을 하나 소개한다. 잘못된 명령어나 경로를 입력하면 실행이 안 되는것은 당연하다. 하지만 왜 실행이 안 되는지 잘 모를 수 있다. 이때 zsh는 기본 옵션으로 맞춤법 수정 기능인 CORRECT를 제공한다. 이 기능은 잘 못 입력한 명령어를 올바르게 수정하도록 도와준다. 1. 잘 못된 명령어를 입력해보자. 터미널에서 틀리게 입력했더니 그냥 해당 명령어를 찾을 수 없다고 뜬다. 이 부분을 왜 실행이 안 되는지 좀 더 상세히 알고싶다. 2. zshrc 파일을 열자. vi ~/.zshrc 아래의 코드를 추가한 뒤 :wq로 저장하고 나오자. setopt CORRECT setopt CORRECT_ALL 수정한 zshrc 파일을 적용하자. source ~/.zshrc 3. 다시 잘못된 ..
개인적인 기록용으로 남기는 글 이다. 본인은 mac의 기본 쉘을 zsh로 사용중이었다. 그러다 mac의 터미널을 예쁘게 꾸미고 싶어서 순정 터미널을 버리고 iterm2와 oh-my-zsh를 설치하여 터미널을 커스텀 했다. 그런데 oh-my-zsh를 설치했을때 zsh 쉘에 빼곡히 적어놨던 환경변수 설정들이 전부 날아갔다..(왜 날아갔는지 원인은 모른다..) 뭔가 모를 배신감으로 날아갔던 설정 중에 중요한거 몇개만 기억해내 bash 쉘로 옮겨 저장하는 객기를 부렸다. 그런데 적용이 안 된다. 당연하다.. iterm2의 기본 쉘을 zsh로 설정해 놨으니.. 객기를 인정하고 다시 zsh로 돌아왔다.(사실 쉘 이 잘못한건 없다..) 이 과정 중에 일어놨던 일과 쉘에 대해서 아래에 기록하도록 한다. zsh 설치 z..
사용할 jdk를 변경했다면 인텔리제이에서도 jdk 변경을 해줘야한다. 웬만하면 인텔리제이가 자동으로 버전을 잡아주지만 잘 변경 됐는지 확인을 위해 방법을 기록한다. 본인이 사용하고 있는 java 버전이 무엇인지 확인한다. java -version 1. IntelliJ preferences 에 들어간다. 단축키는 Command+,(MacOS) 또는 Ctrl+Alt+S(windows) 이다. 2. IntelliJ preferences > Build, Execution, Deployment > Build Tools > Gradle > Build and run > 17버전 설정 3. IntelliJ preferences > Build, Execution, Deployment > Compiler > Java Co..