본문 바로가기

스프링부트11

[스프링부트/업무일지 만들기] ChatGPT가 알려준 스프링 전역 예외 처리 구현 하기 서비스를 만들다 보면 어김없이 예외처리, 에러처리를 해야될 때가 반드시 옵니다. 그리고 계속 반복적으로 사용되는 예외처리 하는부분이 발생합니다. 그래서 스프링에서는 전역적으로 예외처리를 하는 @ControllerAdvice를 지원합니다. 이번에는 컨트롤러에서 발생하는 에러를 처리하는 GlobalExceptionHandler를 만들어 보겠습니다.  해당 내용은 사실 제가 참조자료로 사용하는 있는 교재에는 없는 내용으로 제가 만든 코드를 챗GPT에게 리뷰 요청하니 알려줘서 적용하게 되었습니다. 애너테이션 지정애너테이션은 @ControllerAdvice, @RestControllerAdvice 두가지를 썼습니다. 유효성 검사 예외 처리유효성 검사 예외처리 부분은 빈칸으로 두면 안되는데 빈칸으로 두고 서버로 요.. 프로그래밍사업/사이드 프로젝트 2024. 6. 6.
[스프링부트/업무일지 만들기] JPA로 DB에 리스트 넣는 방법- 직렬화, 역직렬화 이번에는 List tag를 어떻게 JPA로 DB에 넣고 불러오는지에 대해 알아보겠습니다. 아마도 검색해보니 두가지 정도 방법이 있는거 같습니다. 저는 리스트 자료형을 스트링으로 바꿔서 저장하고 불러오는 방법에 대해 소개보겠습니다.  전체적은 순서는 컨버터 만들기, 엔티티 클래스에 컨버터 적용하기 이렇게 두단계로 나누어 집니다. Converter 만들기위에는 스트링이라고 표현했지만 더 정확한 표현은 Json 문자열로 변환했다라는 것이 더 정확한 표현인거 같습니다. 한줄 한줄씩 설명하면서 각부분이 왜 필요한지에 대해 설명드리겠습니다. @Converter이 클래스가 JPA 변환기를 나타내는 애너테이션입니다.  ObjectMapper 변환을 위해 ObjectMapper를 인스턴스화 합니다. 리스트를 문자열로 변.. 프로그래밍사업/사이드 프로젝트 2024. 6. 5.
[스프링부트/업무일지 만들기] 업무일지 화면을 보여주는 컨트롤러를 만들기-최신 순서로 정렬하기 앞서 API 기능을 구현하게 위한 RestController를 만들었습니다. 이번에는 화면을 보여주는 뷰 컨트롤러를 만들어보겠습니다. 여기서 가장 애먹었던 부분은 최신 글을 제일 상단에 오는 방법, 즉 자바 리스트 정렬에 관한 로직과 업무일지를 수정하는데 리스트를 스트링으로 바꾸는 부분이었습니다. 최신글을 제일 위로 정렬하기몬가 쉬워 보이면서도 제일 어려웠던 부분이었습니다. 일단 단순한 리스트가 아니라 객체가 저장된 리스트에서 객체의 각 ID값을 기준으로 정렬하는 방법을 찾아야 했습니다. Immutable object is modified 오류 해결일단 기본적으로 아래 스샷과 같이 코드를 만들었는데 오류가 계속 났습니다. 불변 객체를 바꾸려 했기 때문이죠. 하지만 친절한 인텔리제이가 해결 방법을 알려주어.. 프로그래밍사업/사이드 프로젝트 2024. 6. 4.
[스프링부트/업무일지 만들기] 업무일지를 저장하고 수정하고 삭제하고 읽어오기 이번에는 DB에 업무일지를 저장하고 수정하고 삭제하고 읽어오는 코드를 작성해보겠습니다. 스프링 데이터 JPA를 이용해 간단하게 구현해보겠습니다. Repository 만들기스프링 데이터 JPA를 이용하면 손쉽게 DB에서 데이터를 읽어오고 삭제하고 저장하는 기능을 구현할 수 있습니다. 여기서는 검색 기능도 미리 추가 하였습니다. 그리고 자신이 쓴 글만 볼수 있게 하기 위해 이메일을 입력 받습니다. 보통의 다른 사이트와 같이 이메일을 아이디로 사용하는 업무일지 입니다. 전체코드@Repositorypublic interface WorkLogRepository extends JpaRepository { @Query( "select distinct w from WorkLog w " + .. 프로그래밍사업/사이드 프로젝트 2024. 6. 2.
[스프링부트/업무일지 만들기] 업무 일지에 적을 내용을 담을 모델(엔티티)만들기 이제 우리가 업무일지에 작성한 내용을 담을 그릇이 필요합니다. 이것을 사실 엔티티, 도메인, 모델 이런식으로 표현하는 것으로 보이지만 각각이 부르는 이름에 따른 차이점이 있을 것입니다. 하지만 결국에는 DB에 저장된 데이터를 OOP의 세계로 가져와 담기 위한 그릇이라고 저는 이해했습니다. 이것에 대해 정통하게 공부한 입장이 아니다 보니 이런 개념적인 부분은 틀릴 수 있으니 양해 바랍니다. 엔티티 만들기업무일지에 저장할 내용id: 보통 pk로 불리우는 자동으로 1부터 생성되는 값입니다. log: 제가 작성한 오늘 업무 일지가 저장되는 곳입니다. userName: 이 업무 일지를 작성한 사람이 저장되는 곳입니다. createAt, updateAt: 업무일지를 작성한 시점, 수정한 시점을 저장하는 곳입니다. .. 프로그래밍사업/사이드 프로젝트 2024. 6. 1.
[스프링부트/업무일지 만들기] 스프링 부트 초기 설정 하기 스프링 부트 프로젝트를 시작하면  라이브러리 설치, application.properties에서 DB 설정 등 초기 세팅을 해야 합니다. 이번에는 제가 한 초기 세팅에 대해 정리 해보겠습니다.  초기 세팅 전 이 업무일지 만들기 스프링 부트 프로젝트는 supabase의 DB를 사용하여 진행합니다. 따라서 PostgreSQL를 사용합니다.  목차스프링 부트 프로젝트 생성라이브러리 설치application.properties 설정1. 스프링 부트 프로젝트 생성저는 인텔리제이 얼티메이트 버전을 사용중이라 스프링 부트 프로젝트를 생성 할수 있지만 아니신 분들은 Spring Initializr에서 생성하시면 됩니다.    2.  라이브러리 설치역시시 인텔리제이 얼티메이트 버전을 사용중이라 스프링 부트 프로젝트를 .. 프로그래밍사업/사이드 프로젝트 2024. 5. 31.
[스프링부트/업무일지 만들기] 매일 회사에서 한 일 정리하는 업무일지 만들기 지금까지는 플러터로 내부 저장소를 활용하여 앱을 만들어서 배포해왔습니다. 하지만 백엔드 서버가 없이는 백업, 공유 같은 기능 구현에 한계가 있다고 느끼고 저만의 서버를 만들기 위해 스프링부트를 공부하고 있습니다. 다만 공부하면서 느끼는 것은 이런거 할 시간에 supabase를 더 잘 활용할 방법을 찾는게 현명하다고 생각이 듭니다. 아무래도 혼자 이것 저것 해야되는 저한테 1인 개발자에게는 시간적 한계라는 부분이 존재하기 때문에 이미 만들어진 환경을 더 잘 활용하는 것이 나아보입니다.  그럼에도 스프링 부트를 공부 하는 이유제일 큰 이유는 저 혼자 만족하는 부분이 크기 때문입니다. 실제로 스프링 부트 서버로 교대근무 관리 웹서버를 만들어서 활용 중이고 supabase로 안되는 커스텀 한 부분이 반드시 생기.. 프로그래밍사업/사이드 프로젝트 2024. 5. 31.
타임리프(Thymeleaf) 초기세팅하고 기본 레이아웃(layout) 세팅하기-치트시트 스프링 부트를 공부하다보면 프론트엔드를 구성하기 위해 타임리프(Thymeleaf)를 사용하게 됩니다. 그런데 이 타임리프를 사용하기 위해서는 라이브러리를 설치하고 매번 반복된는 화면 세팅을 하기 위해서는 기본 레이아웃을 세팅해서 사용해야 합니다. 다만 이러한 초기 세팅은 프로젝트를 진행하는 동안 딱 한 번하기 때문에 자주 까먹기 마련입니다. 저는 이것을 외울까 아니면 어디서 복붙 할까 고민하다가 이렇게 기록을 남겨 복붙하는 방향을 선택 하였습니다.  그러면 이제부터 타임리프 초기 세팅과 기본 레이아웃을 세팅해보도록 하겠습니다. 1. 라이브러리 설치타임리프와 레이아웃 기능을 사용하기 위해서는 라이브러리를 두개 설치해야 됩니다. 기본 타임리프 라이브러리는 인텔리제이 유료버전이나 스타터 사이트를 통해 만드실 .. 프로그래밍사업/사이드 프로젝트 2024. 5. 20.
[자바] 맥에 설치된 자바 버전 확인 하는 법, 삭제하는 법, 버전 바꾸는 법(M1 맥, zsh, 버전 변경 안될 때) 맥에 설치된 자바 버전 확인하는 법 맥에서 개발하다보면 과거에 프로젝트를 열면 자동으로 인텔리제이에서 설정된 자바 버전이 없으면 자바를 설치하다보니 여러가지 자바가 설치되어 어떤게 설치되어 있는지 알고 싶을때 아래 명령어를 터미널에 입력하면 됩니다. /usr/libexec/java_home -V 맥에 설치된 자바 삭제하는 법 터미널에서 ~/Library/Java/JavaVirtualMachines 폴더로 이동합니다. 그리고 ls를 입력하면 설치된 자바 버전이 나옵니다. 그리고 rm -rf azul-21.0.2로 삭제하시면됩니다. 맥에 자바 환경변수 설정(zshrc 기준) 자바 환경설정을 해야되는데 저는 zshrc을 사용하여 zshrc 기준으로 설명드리겠습니다. 우선 터미널에서 code ~/.zshrc 입.. 프로그래밍사업/사이드 프로젝트 2024. 1. 21.
[스프링 부트] h2 database 연결까지 기본세팅 Spring boot와 h2 연결하기 회사 업무로 mssql을 사용하고 있는데 결국 sql을 사용할 수 있는 사람이 저 밖에 없다보니 스프링부트를 이용해서 자주 찾는 데이터는 손쉽게 누구나 찾아 볼 수 있도록 해야될 필요성을 느꼈습니다. 그래서 스프링 부트 3 백엔드 개발자 되기(신선영 지음)과 김영한 선생님의 스프링 강의를 복습하면서 익힌 h2 DB 연결하는 기본 세팅을 정리하고자 합니다. 순서 h2 DB 다운로드 권한 주기(mac만) 실행하기 db 생성 및 접속하기 스프링부트 설정하기 h2 dabase 다운로드 다운로드는 아래 주소에 들어가셔서 받으시면 됩니다. 저는 설치버전이 아닌 zip파일로 받았습니다. https://www.h2database.com/ H2 Database Engine (redi.. 프로그래밍사업/사이드 프로젝트 2024. 1. 21.
[스프링 부트 + JPA + MySQL] 간단한 회원 관리 예제로 알아보는 스프링부트 -1탄 DB 설정편 스프링 부트, JPA, MySQL 사용법 정리 겸 김영한's 스프링 입문 강의 후기 기본적인 자바 문법 공부가 끝나가던 중 문법 공부만하는 것은 공부에 도움이 별로 안된다는 것을 파이썬을 공부하면서 느꼈기 때문에 요새 스프링을 공부하고 있습니다. 공부 교재는 인프런의 김영한님이 무료로 공개하신 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의'를 듣고 제 머릿속에 남기기 위해 정리해보고자 합니다. '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의'는 깊이 있는 내용보다는 가볍게 작은 프로젝트를 구현해보면서 스프링에대한 전반적인 이해와 많은 흥미를 유발하는 강의인것 같습니다. 강의 시간도 제일 긴것이 20분이이고 대부분 10분 내외로 중간 중간 .. 프로그래밍사업/사이드 프로젝트 2022. 11. 14.