Spring Boot
-
Jobrunr 사용한 Springboot에 스케줄링 작업 구현Spring Boot 2025. 1. 30. 00:20
배경Spring Scheduler는 간단하지만 실패시 처리/실행 로그 확인 같은 작업이 굉장히 불편하다.Jobrunr를 사용하면 Spring Scheduler의 불편함을 해결할 수 있다.별도 구축없이 내장 dashboard를 제공 (실패/성공 이력 모니터링 가능, 스케줄링 삭제, 재시도 가능)애너테이션 기반 내장 스케줄링 지원 (@Recurring)API 기반 작업 등록 지원 (enqueue, scheduleIn, schedulerRecurrently)실패 시 재시도, 부가처리 가능사용 방법이 간단하여 spring batch 처럼 많은 공부를 필요로 하지 않는다. (Java 8 문법만 알면 이해 가능하다.) 공식 문서 : https://www.jobrunr.io/en/documentation/ Docu..
-
[springboot 예외 처리 안티패턴 정리] Exception Handling Worst PracticeSpring Boot 2024. 12. 30. 01:05
개발자로 회사를 4곳을 거치며 다양한 예외처리 방식을 경험했다.예외처리 방식의 정답은 없지만 틀린 답은 있었다. 해서는 안되는 안티패턴을 정리 해본다.선행 지식 java error : https://yeoon.tistory.com/1351. 클라이언트에게 검증 위임하기 (X)서버의 입력 유효성 검사는 반드시 서버에서 이루어 져야한다.실무에서 클라이언트에서 검증을 이미 진행한다는 이유로, 서버에서 입력 값 검증을 하지 않는 경우가 있었다.유효성 검사를 넣으면, 개발 속도가 느려진다는 이유 였는데 이는 굉장히 위험하다.사용자는 반드시 실수한다. 사용자는 알고도 잘못된 파라미터를 보낸다.900만원 9000원으로 조작하여 구매한 이야기 : https://www.seoul.co.kr/news/newsView.ph..
-
MySQL 관련해 신경쓰면 좋은 것 (feat. 성능)Spring Boot/DB 2024. 11. 13. 21:48
1. mysql 5.7.20 → mysql 8.0 아키텍처 변경Query cache가 MySQL 5.7.20부터 depreciated 되고, 8.0을 기점으로 삭제(https://dev.mysql.com/doc/refman/5.7/en/query-cache-configuration.html)트래픽 많아지면서 발생하는 DBMS의 Query cache 업데이트 비용과, 운영중 발생하는 캐시 stale 문제가 Query cache 기능을 제공하는 이점 보다 심각하다 판단하여 삭제mysql 버전을 올렸는데 더 느려진 경우가 있는데 Query cache가 없어졌기 때문. 캐시는 애플리케이션 단에 직접 구현해야한다. 2. mysql 5.7.20 → mysql 8.0 Storage 엔진query 실행하는 구현체 엔..
-
Lombok 사용시 주의점 (쓰지 말아야 할 Lombok)Spring Boot 2024. 11. 12. 23:44
Modern Java 에서는 Lombok 사용을 지양하고 있다. [참고 : https://www.danvega.dev/blog/no-lombok] 큰 이유는 이러하다. 1. IDE 기능으로 디버깅을 어렵게 한다.2. Annotation Processing에 충돌을 일으킨다.3. 숨겨진 코드가 버그를 유발 이에 따라서, Java 17부터 Lombok의 대부분 기능을 대체할 수 있는 record 클래스, Builder가 필요하다면 IDE로 생하길 권장한다.하지만, 실무에서는 Java 8을 쓰는 것이 대부분이다. Lombok을 쓰지 않을 수는 없기 때문에 아래의 Lombok 사용법을 꼭 읽어보고 주의해서 사용해야한다. 배달의 민족에서 기술이사로 있는 손권남 님의 블로그를 보면Lombok best pract..
-
iterm2 설정하기Spring Boot/환경설정 2024. 11. 12. 23:10
Item2 설치하기 : https://iterm2.com/oh-my-zsh 설치하기 : https://ohmyz.sh/#install oh-my-zsh 테마 변경 : https://github.com/ohmyzsh/ohmyzsh/wiki/Themes터미널 컬러 프리셋 설치 : https://github.com/wesbos/Cobalt2-iterm터미널 폰트 설치 : https://github.com/powerline/fonts oh-my-zsh 플러그인 설치 - 터미널 명령어 자동완성- 명령어 컬러 하이라이트 git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins..
-
IntelliJ 테스트 관련 Live Template 생성하기Spring Boot/인텔리제이 2024. 11. 10. 23:24
1. Live Template 설정 cmd + shift + a > Live Template+ 버튼 클릭2. Group 생성- 테스트 목적의 live template을 생성할 의도로 Test group 생성 3. Live Template 생성- + 버튼 > Live Template 클릭하고 아래와 같이 코드릴 입력한다. - template text 창 아래 define 버튼을 눌러 java를 선택한다.- 그러면 우측에 Reformat according to style과 use static import if possible 체크박스가 생성되는데 선택해준다. - Edit Variables를 클릭하고 아래와 같이 입력한다.4. Live Template 사용위 설정을 통해 다음과 같이 단축키로 뼈대 코드를 생..
-
2025 인텔리제이 추천 플러그인 (recommended intellliJ plugin)Spring Boot/인텔리제이 2024. 11. 10. 21:19
1.배경인텔리제이 첫 설정시 추가한 플러그인을 소개한다.2. IntelliJ pluginLinter 설치 (사용 이유 참고 : https://yeoon.tistory.com/151)SonarLint (자바) : 소나큐브에서 제작한 linterKtlint (코틀린) : 코틀린 공식 linterGitHub Copilot : 회사에서 사전에 사용승인 필요JPA Buddy : JPA 관련 도구 Entity 생성시에 도움된다.LangCursor : 마우스 커서에 현재 영어인지 아닌지 확인. 한국인이 제작한 플러그인으로 non-english 언어 사용자의 편의를 위함String Manipulation : String 조작 관련 지원 도구 (String 관련 작업의 생산성 상승)camelCase ↔ snake cas..
-
springboot 애플리케이션 데이터베이스 초기화Spring Boot 2024. 11. 8. 23:58
Spring boot에서는 데이터베이스 변경에 대한 관리 방법을 제공한다.default 설정은 package에 entity를 감지하여 각각의 테이블을 자동 생성한다.데이터베이스를 초기화 하는 방법은 다양한 방법이 있다. 꼭 하나만 선택하여 사용하는 것을 추천한다. 1. JPA를 사용하여 Database를 초기화하는 방법프로젝트를 시작할때 JPA가 DDL generation 기능을 제공한다.Entity를 작성하고 애플리케이션을 실행하면 빈 테이블이 생성된다.spring.jpa.generate-ddl=true # vendor 독립적이고 on/off 할 수 있다2. Hibernate를 사용하여 Database를 초기화하는 방법외부 환경 변수로 조작spring.jpa.hibernate.ddl-auto=creat..