일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- api gateway 설계
- api gateway 필터
- ApplicationEvent
- argocd
- assertThat
- async/await
- AVG
- AWS
- aws autoscaling
- aws eks
- aws iam role
- AWS KMS
- Today
- Total
목록Web/Spring (33)
기록
시작하면서이번 포스트에서는 Spring Framework에서 AOP와 커스텀 어노테이션을 사용하여 경험치(XP)를 부여하는 시스템을 구현하는 방법을 소개하고자 합니다. (1) 프로젝트 구성아래와 같이 구성된 API 서버에서 요구사항을 구현하려고 합니다:Spring BootGradleKotlin(2) 요구사항사용자가 특정 행위를 할 때 경험치를 부여합니다:좋아요 버튼을 누를 때(/customer/emoji/like) 경험치 100을 부여합니다.게시글을 작성할 때(/customer/challenge) 경험치 100을 부여합니다.(3) AOP를 사용한 이유좋아요를 누르거나 게시글을 작성할 때 경험치 100을 부여하는 로직이 반복되므로, 이를 공통화하는 방법을 고민하게 되었습니다. 매번 같은 로직을 각 행위 로..
환경분리 Spring Boot를 사용하여 프로젝트를 개발할 때, 각각의 작업 환경에 대해 설정을 분리하고 싶은 경우가 있다. 이글에서는 spring.profiles.active 옵션을 사용하여 Spring Boot 애플리케이션의 작업 환경을 분리하는 방법을 정리하고자 한다. 필요성 개발, 테스트, 프로덕션 환경에서는 각기 다른 설정이 필요. 테스트서버, 프로덱션용 서버는 보통 분리하는 경우가 많은데, 개발 환경을 분리하여 각 환경에 맞는 데이터베이스에 연결하는 등 다르게 설정할 수 있다. 예를 들어서, 현재 진행하고 있는 프로젝트에서는 이미지저장소 및 데이터 베이스를 환경에 따라 다르게 채택하였다. 이미지 저장소 및 데이터베이스 설정 profile 설명 이미지저장소 데이터베이스 test 테스트환경 로컬 ..

들어가면서 토이 프로젝트를 진행하면서 이미지를 효과적으로 관리하기 위해 로컬 저장소 대신 AWS S3를 활용하려고 한다. 이에 따라 이미지의 안전한 업로드, 조회, 삭제 방법을 찾아보고 적용한 내용을 공유하고자 한다. (1) 이전 글 2024.01.29 - [Web/Spring] - API/이미지 처리 및 저장 방법 2024.02.05 - [Web/Spring] - 이미지 처리 및 저장 방법 : 로컬 저장소 업로드/조회/삭제 (2) 프로젝트 구성 Java Version: 17 Build Tool: Gradle Kotlin Spring Boot Swagger (3) 패키지 구성 아래에서는 S3Service (AWS S3에 이미지 저장)하는 부분을 다루고자 한다. 본문 AWS S3 설정 AWS S3 버킷 생..

들어가며 토이 프로젝트를 진행하면서 이미지를 효과적으로 관리하기 위해 로컬 저장소를 활용하는 방법에 대해 고민하게 되었다. 이에 따라 이미지의 안전한 업로드, 조회, 삭제 방법을 찾아보고 적용한 내용을 공유하고자 한다. (1) 이전글 2024.01.29 - [Web/Spring] - API/이미지 처리 및 저장 방법 (2) 프로젝트 구성 Java Version: 17 Build Tool: Gradle Kotlin Spring Boot (3) 패키지 구성 아래에서는 ImgLocalService (로컬영역에 이미지 저장)하는 부분을 다루고자 한다. 본문 1. 로컬 저장소에 이미지 업로드하기 (1) POST /api/image 엔드포인트 클라이언트에서 서버로 이미지를 업로드 @RequestMapping("/a..

들어가면서 토이 프로젝트를 진행하면서 이미지를 효과적으로 처리하는 방법을 고려하였다. 그 과정과 결과를 고려하려고 한다. 예를 들어서 공지사항을 저장하는 기능을 구현한다고 해보자. 공지사항과 이미지 정보를 데이터베이스에 저장하도록 설계하였고, 각 테이블은 아래와 같다. 공지사항 테이블 TB_NOTICE type comment notice_id String 공지사항 구분자 content String 공지사항 내용 title String 공지사항 제목 이미지 테이블 TB_IMAGE type comment image_id String 이미지 구분자 file_name String 이미지파일 이름 file_size Integer 이미지파일 크기 본론 1. 공지사항 저장하기 클라이언트에서 공지사항을 저장하기 위해서..
1. 문제 정의: 서비스 간 순환참조로 인해 스프링 부트 애플리케이션 실행 시 빈 초기화에서 순환 의존성 문제 발생. The dependencies of some of the beans in the application context form a cycle ┌─────┐ | challengeService defined in file ↑ ↓ | couponService defined in file └─────┘도메인 서비스 A와 B 간에 의존성이 존재하며, A는 B를 참조하고 B는 A를 참조하면서 순환참조 문제가 발생. 서비스 A는 ChallengeService를, 서비스 B는 CouponService를 참조하고 있음. 2. 고려사항 서비스 간 의존성 그래프를 분석하여 순환참조를 발생시키는 의존성 구조를 ..

시작하면서 Spring Boot, JPA, Kotlin, H2(개발용 DB)을 활용하여 Notice 테이블의 목록 조회와 삽입을 구현하고자 했다. 그런데 아이디를 어떤 방식으로 생성해야 하는지에 대한 고민이 있었다. 아래는 그 내용을 다룬 포스팅이다. 프로젝트 구성 (1) 공지사항 테이블 (Notice) (2) 데이터베이스 (3) 엔드 포인드 POST /notices 공지사항 생성 GET /notices 공지사항 목록 조회 기본 키 생성 전략(IDENTITY, SEQUENCE, TABLE) 데이터베이스에서 기본 키(Primary Key)를 생성하는 방식으로는 여러 가지 전략이 있다. 이중에는 IDENTITY, SEQUENCE, TABLE과 같이 자주 사용된다. 각 전략은 고유한 특징과 장단점을 가지고 있..
시작하면서 최근에 프로그래머스의 고양이 사진 검색 API 만들기 과제를 하면서, Feign API를 접하게 되었다. 이전에는 HttpConnection를 사용해 Http client를 작성했는데, Feign API는 인터페이스만 작성하면 기본적인 통신이 가능해서 훨씬 단순하다고 느꼈다. 이 글에서는 정말 간단하게 Feign API를 사용하는 방법에 대해서 이야기하고자 한다. 미리 준비할 것 아래에서는 고양이 사진 API를 사용할 것이므로, 미리 사용할 API와 API 응답에 맞는 Response 객체를 만들어둔다. HttpConnection 위 예제를 HttpConnection을 통해 구현하면, 외부 Api를 호출하고 jsonString을 Vo에 담는 과정까지 직접 구현해야 했다. public class..