error message를 정의하던 도중 enum으로 정의하여 사용하면 더 편할 것 같아 base가 되는 enum class를 생성해서 extends로 상속받아서 사용하려고 했었다. 하지만 enum은 기본적으로 class에 Enum<T> class를 extends
back-end에서 작업을 진행하면서 상태 코드 값을 3xx로 반환해야할 경우가 있다. 상태 코드값이 3xx인 경우는 redirection이 필요한 경우인데. 리디렉션(리다이렉션)은 현재 요청한 url에서 반환 후 연결되는 url을 변경하여 연결한다는 것이다. 주로 p
업무를 하다보면 front의 데이터를 back으로 던질 때 비동기로 전송하는 경우가 많다. 이럴 때 데이터가 적다면 js기준(익스플로러 10 이상)로 붙여서 전송하면 되지만... 업무의 대부분은 기존 form을 submit 하던 것을 비동기로 바꾸는 작업이 많기도 하다
업무를 진행하며 front와 back 데이터를 주고 받는 방법에 대해 정리해놓으려고 한다. 리팩토링을 하게 되면 대부분 서비스 쪽만 보다가 가끔 새로운 기능의 추가나 동기 방식을 비동기로 처리할때 말고는 front와 back 데이터를 주고 받는 것을 생각할 일이 거읭
학습 이유 legacy project에서는 모두 model이라는 통칭으로 사용하여 위 세가지에 대해서 정의하지 않고 객체를 만들어서 사용하였는데 그러다보니 이름이 계속 비슷한 class가 생성되고 차이를 구별하기 어려워졌다. 그래서 얼핏 비슷한 개념으로 생각하고 넘어갈
cookie를 만들어서 값을 체크할 일이 있었다. 이전 소스에서 로직이 service에서 쿠키를 만들어서 다시 똑같은 로직을 탔을 때 쿠키의 value를 체크하여 값이 있다면 return하고 없다면 쿠키를 만들고 서비스 로직을 실행하는 서비스였는데 쿠키가 아무리 설정을
docker의 image와 container의 개념을 확인pull한 node 이미지로 container를 실행시켜보고 exec 명령어로 파일을 실행시키는 것을 해보기백그라운드로 실행시키면서 컨테이너 죽지 않도록 실행docker로 붙고 싶다면exec 명령어 확인test
Batch 프로젝트를 설정하면서 JDBC가 아닌 JPA로 변경할 때 DataSource가 여러개를 분리하여 적용할 수 있도록 설정하는 부분이 필요했다.먼저 batch가 사용할 data source를 @Primary를 통해 선언해둔다.그 후 service db에 붙을 d
eureka에 client를 등록하는건 잘 되었는데 shutdown 시 eureka에서 인스턴스가 삭제되지 않는 문제가 있었다. 물론 개발 환경이였고 intellij로 종료했을 때였다. 인터넷을 찾아보니 eureka나 client 자체에 문제가 아니라 intellij나
OSIV란 Open-Session-In-View의 약자로 JPA의 영속성을 관리하는 범위에 대해 설정하는 값이다. 해당 내용을 궁금하게 된 이유는service를 설계한던 중 다음과 같은 warning 메세지를 보게 되었는데 최대한 warning 메세지를 없애가면서 작업
밸덩 Iterable 다루기repository를 jpa를 통해서 extend 하여 생성하게 되면 List 혹은 Iterable로 반환하게 되어있다. 그중 나는 CrudRepository를 주로 사용하는 편이여서 Iterable을 통해 Dto나 Vo로 변환하여 반환하는
제가 혼자 이해한 개념을 정리한 글입니다! 더 좋은 글이 많으니 꼭 제 글을 참고하시지 않아도 괜찮습니다! 또한 혹시라도 시간내어 읽어보셨으면 제가 잘못 이해한 부분에 대해 댓글로 알려주시면 감사합니다! 또한 해당 글의 내용은 대부분 그런 REST API로 괜찮은가 유
Docker를 사용할 때 root 권한으로만 사용할 수 있도록 default가 설정되어 있다. 하지만 현업에서 root 계정을 사용하는건 좀 위험한 일을 초래할 수 있어서 최대한 계정별로 권한을 나누어 사용하는 것이 좋다.정보를 입력하여 정상적으로 추가된것을 확인할 수
명령어를 실행하고 몇가지 질문을 하는데 특별한 설정 없다면 다 enter 치면 된다. 키 위치나 추가 비밀번호 설정인데 안해도 된다.명령어로 공개키 전송해도 되지만 안되는 경우 id 값을 찾아서 복사해주면 된다.전송된 서버에서 authorized_keys 파일은 600
intellij 에서는 따로 옵션을 편집하는 화면이 제공되어서 간단하게 적용할 수 있었는데 vsc에서도 변수를 설정할 수 있는지 알아보았다.당연하게도 vsc도 쉽게 설정이 가능했다.먼저 ctrl+shift+p를 눌러 launch.json를 입력하여 파일을 열자.아무런
참고 밸덩 swagger 적용 소개글참고 \[Spring Boot Tutorial] 13. OpenAPI 3.0를 이용한 REST API 문서 만들기 (Swagger v3)api 프로젝트를 진행하면 api 자동 문서화도 함께 진행하게 된다. 지금까진 spring 에서
테스트 코드를 작성하다 보면 redis template을 stub 해야한다. 그런데 redis를 사용하면 문제가 2개가 발생했었는데 우선 redis template을 mocking 해야하고 두번째로는 redis가 데이터를 저장하는 메서드 자체가 void인 경우가 있기
postman이나 cmd로 api 자체적으로 요청함에 있어서는 문제가 발생하지 않았고 문제는 docs 쪽이나 h2 쪽을 접근할 때 발생했다. 그 이유는 화면을 뿌리기 때문이였는데. 화면을 뿌리면서 필요한 요청이/favicon.ico 해당 url로 호출이 생기기 때문에
정답은 사실 없다. 어디서든 기능을 구현하면 되기 때문이다. 하지만 좀 더 정확하게 구분지어 사용을 하고 싶은 사람들도 있을 것이다. 그래서 이 고민의 결과를 여기다 적어두려고 한다.우선 filter와 interceptor, aop의 흐름을 보면 결국 controlle
참고 junit api(https://junit.org/junit5/docs/snapshot/user-guide/index.html테스트 코드는 빠를 수록 좋다. 물론 정확한 실행과 결과를 가진다는 전제 하에 빠를 수록 좋다는 것이다. 테스트코드를 빠르게 만들
프로젝트를 하다보면 maven repository에 올라가있는 의존성을 추가할일이 더 많긴 하지만 직접 jar파일을 설치하여 의존성을 주입해야하는 경우도 있다.그럴땐 gradle과 maven 마다 의존성을 주입해주는 방법이 다른데 오늘은 gradle만 해보자!프로젝트
spring에서 json 데이터를 파싱하거나 object를 json 형태의 string으로 변환할 때 자주 사용되는 라이브러리이다. spring 자체에서 제공하기 때문에 gson이라던지 simpleJson 같은 라이브러리를 따로 추가하지 않아도 사용할 수 있다.다른 회
실무에서 restdocs를 적용하여 잘 사용하고 있었는데. 하나의 문제가 발생한다.그 문제는 바로 api가 늘어날 수록 내 index.adoc의 길이도 늘어나고 api 수정을 해야할땐 해당 부분을 검색해서 찾기가 힘들다는 점이다... 거기에 더해 adoc 파일을 기준으
api 작업을 하다보면 데이터를 반환하는데 있어 SnakeCase 또는 CamelCase로 반환을 해주어야한다. 하지만 내 프로젝트에서는 CamelCase로 작업을 해놨는데 반환하거나 입력을 받을 때는 SnakeCase로 받아야할 때가 있다. 이러면 내 코드도 다 수정
참고 밸덩 sprint-boot-multipart-requestsapi로 json 데이터 or path variable, parameter 만 다루다가 한번쯤 마주치게 되는 파일 데이터 받아서 쓰기... 항상 헷갈리는 부분이라 정리해두려고 한다!spring에서 기본적으
db를 덤프 뜬 후 생성된 xxx.sql 파일을 db툴을 사용하지 않고 직접 적용해야할 경우가 있다. (보안적인 이유로 인해 특정 linux 서버에서 밖에 접근할 수 없을 경우!)로 입력해주면 된다!
리팩토링을 하다보면 테스트를 위해 h2를 통한 테스트가 진행되어야 하는데. 그중 특정 query들은 해당 db의 function을 사용하는 경우가 있다. h2는 해당 function을 직접 지원하지 않고 사용자가 직접 정의해서 사용할 수 있도록 진행하고 있는데 해당 방
에러의 전문을 보면이런 비슷한 에러를 뱉어내고 있다. 그 이유는 intellij를 무료 버전으로 사용하고 있고 프로젝트가 war 파일인 경우에 발생할 수 있는데. intellij에서 war 파일을 실행하며 톰캣을 불러와서 실행하는데 그때 pom.xml 이나 gradle
참고 mockito-inline 참고mockito-inline 이전에 power mockito라는 라이브러리를 통해 static mehtod를 테스트할 수 있었다. 하지만 mockito에서 3.4.0 이후로 mockito-inline이라는 라이브러리를 추가하여 stat
대부분 pr(mr) 등을 통해 깃에 머지하고 있으면 머지를 잘못하는 경우는 크게 많지 않을 것이다. 그런데 나는 intellij에서 정말 가끔 렉 때문에! 작업하던 브랜치가 다른 브랜치와 머지하는 경우가 생겼다... 해당 작업이 내 브랜치에서 배포되면 안되기 때문에 브