Spring에서의 ETag Spring에서도 ETag를 손쉽게 사용할 수 있도록 지원하고 있다. 그 중 리소스 캐싱에 대한 기능은 여러 API에서 공통으로 사용할 수 있는 기능이기에 Filter로서 지원하고 있다. 충돌 피하기 (Lost update problem)에 대해서는 지원하지 않는 듯하다. 이에 대해서는 뒤에서 더 알아보자. ShallowEtagHeaderFilter class에서 지원한다. GitHub - spring-projects/spring-framework: Spring Framework Spring Framework. Contribute to spring-projects/spring-framework development by creating an account on GitHub. g..
Spring boot - API Versioning API를 개발하다보면 API 버전에 대한 생각을 하게 된다. 버저닝(Versioning)을 하지 않으면 input/output이 변경되었을 때 이를 사용하고 있던 클라이언트에게 제대로 서비스할 수 없기 때문이다. 이러한 API Versioning을 하기 위해 지금까지 단순히 URI에 version을 명시하는 방향으로만 진행해왔는데, 더 다양한 방법이 있어 이를 정리해놓고자 한다. 모든 예제코드는 아래 Repository를 참고하자. GitHub - KimDoubleB/spring-learning: 🌱 •̀.̫•́✧ 🌱 •̀.̫•́✧ . Contribute to KimDoubleB/spring-learning development by creating a..
개요 / 문제 기존에 Spring fox를 사용하다가 deprecated 되어 springdoc openapi를 도입하게 되었습니다. Swggger 인터페이스는 두 라이브러리 다 맞추고 있었기에 의존성 교체와 몇가지 수정만으로도 대체가 가능했는데요. 근데 막상 개발서버에 배포를 해보니 다음 사진처럼 Failed to load remote configuration. 메시지와 함께 Swagger 실행이 불가능한 문제가 발생했습니다. 뭔가 요청이 제대로 전달되지 않은 것 같아 Chrome 개발자 도구로 확인해보니 Swagger 리소스에 대한 접근이 제대로 되지 않고 있는 것을 발견했습니다. 위 문제를 해결하기 위해 이슈를 찾기 시작했습니다. 원인 파악하기 1. swagger-config 접근 허용하기 제가 운..
사이드 프로젝트를 Spring boot 3.0으로 migration 하면서 정리한 글. 아주 러프하게 정리했다. - 다음에 Spring boot migration 3.0 문서를 번역해야겠다는 생각이 ... javax package name 변경 javax → jakarta IntelliJ에서 import javax. 을 import jakarta. 로 전체 replace하면 편하다. (검토필요) 왜? Java EE는 오라클에서 이클립스 재단으로 이관되었었음. 오라클이 JavaEE 프로젝트는 이관했지만, Java 상표권은 여전히 보유하고 있었기에 Java naming의 namespace 사용에는 제약이 있음. 이로 인해 Java EE는 Jakarta EE로, API package명은 javax.에서 jak..
최근에 Spring boot를 활용한 프로젝트를 보면 MyBatis(SQL Mapper)보다 JPA(ORM)/Hibernate/Spring data jpa를 사용하는 사례가 더 많은 것 같다. JPA, Hibernate, Spring data jpa를 모르는 분은 구글에서 찾아보길 바란다. 이후에는 JPA라고 약칭하겠다. Query Logging JPA/Hibernate를 사용하면 Query를 직접 작성해 활용하는 것이 아니기에 어떤 Query들이 구성되고 사용되고 있는지 확인하기 어려울 때가 있다. 그래서 이를 로깅 (Logging)을 통해 확인할 수 있도록 지원하고 있다. 근데 많이 알려진 방법이 좋지 않을 뿐더러 쿼리 결과도 정확히 나오지 않아 다른 방법을 제시하고자 한다. 일단 많이 알려진 방법대..
최근에 서비스 개발 코드들을 보면서 옛날 클래스 네이밍/아키텍처 패턴을 보고 있습니다. 예를 들어 DTO, DAO 같은 것들 말이죠. 대략적으로는 알지만, 오랜만에 봐서 그런지 헷갈려 정리해놓고자 합니다. 이 글에서는 일반적으로 이런 역할을 가진다라고 이야기하지만 무조건 적인 것은 아닙니다. 변질된 사례도 많고, 구현하는 사람마다 이해하는 바가 다르기 때문입니다. 그리고 개인적인 의견입니다만 최근에는 여기서 말하는 모든 네이밍/패턴은 많이 사용되지 않는다고 생각합니다. 여러 다른 프레임워크/구현체(ex. JPA/Hibernate 등)들이 어느정도 많이 사용되면서 다른 명명 패턴/추상화(ex. Repository 등)를 사용하고 있기 때문입니다. 하지만 그럼에도 팀 및 정해진 인원들이 어느정도 정해진 컨벤..
Spring boot 웹 서버를 개발하고 Kubernetes에 배포할 때, Profile(local, dev, prd, ...)을 설정하는 법을 알아보자. Dockerfile을 사용해 컨테이너 이미지 빌드 Dockerfile을 통해 이미지 빌드 시, ENTRYPOINT에서 Jar 파일을 실행하며 Dspring.profiles.active 옵션을 통해 설정할 수 있다. ... ENTRYPOINT ["java", "-Dspring.profiles.active=dev", "-jar", "some.jar"] 해당 컨테이너 이미지를 실행시키면, dev profile로 설정되어 Spring boot 웹 서버가 실행된다. Buildpacks(ex. gradle bootBuildImage)를 통해 컨테이너 이미지 빌드..
- Total
- Today
- Yesterday
- 쿠버네티스
- 로그
- 이스티오
- c++
- 하루
- WebFlux
- Kubernetes
- jasync
- 백준
- java
- docker
- HTTP
- tag
- k8s
- Log
- Istio
- 알고리즘
- container
- 일상
- 비동기
- python
- sidecar
- MySQL
- Intellij
- gradle
- Spring
- r2dbc
- Algorithm
- boj
- Spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |