Spring Boot
-
[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..
-
2024 - QueryDSL 근황Spring Boot/JPA 2024. 8. 22. 22:24
QueryDSL은 동적 쿼리를 type-safe하게 작성할 수 있도록 도와주는 오픈소스 JPQL 쿼리 빌더이다. 3년 전부터 큰 릴리스가 없어, 해외에서는 JOOQ라는 기술보다 사용 선호도가 낮으나,우리나라에서는 채용 시장과 기업에서 주류로 자리 잡고 있다. 그 이유로는,인프런 김영한 님의 인터넷 강의로 QueryDSL의 입문 문턱이 상대적으로 낮고,대기업에서 수백만 트래픽도 안정적으로 운영할 수 있다는 검증과 노하우가 세미나로 공유되어Java/Spring/JPA를 사용하고 있다면 필수 기술로 여겨지고 있다. 그런데 최근 주변에서 QueryDSL 이외의 쿼리빌더를 도입하며 트러블슈팅 문의가 오픈카톡에 채팅으로 올라오곤 한다.현재 QueryDSL에 어떤 일이 벌어지는지 알아본다. [JOOQ, vs Que..