일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @GeneratedValue
- @GenericGenerator
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Callback
- case when
- CCW
- chat GPT
- CICD
- Collections
- Combination
- combinations
- Comparator
- Today
- Total
목록Web/Spring (25)
기록
시작하면서웹 개발을 하다 보면 자주 겪게 되는 오류 중 하나가 CORS (Cross-Origin Resource Sharing) 관련 오류입니다. 이는 브라우저에서 다른 출처의 리소스를 요청할 때 발생하는 보안 문제로, 주로 API 서버와 클라이언트가 서로 다른 도메인에 있을 때 나타납니다. 오늘은 Spring Boot와 Swagger를 사용한 프로젝트에서 발생한 CORS 오류를 해결한 경험을 공유하며, CORS의 개념과 문제 해결 방법을 다뤄보겠습니다.CORS란 무엇인가?CORS는 Cross-Origin Resource Sharing의 약자로, "교차 출처 리소스 공유"를 의미합니다. 쉽게 말해, 한 웹 애플리케이션에서 실행되는 JavaScript 코드가 다른 도메인에 존재하는 리소스를 요청할 때 발생..
1. 시작하면서Spring Boot를 사용하여 API 서버를 구축하는 과정에서, 사용자의 유형에 따라 권한을 제어하는 것이 필요했습니다. 이 프로젝트에서는 다음과 같은 사용자 유형을 정의했습니다:BOSS: 관리자 역할로, 시스템 전반에 대한 접근 권한을 가집니다. 이 사용자는 주요 관리 기능을 수행하는 데 필요한 모든 권한을 갖습니다.CUSTOMER: 일반 고객으로, 특정 서비스에만 접근할 수 있습니다. 고객은 자신의 계정 정보나 주문 상태 등을 조회할 수 있습니다.ADMIN: 시스템 관리자로, 사용자 관리 및 시스템 설정을 담당합니다. 이 사용자는 시스템의 운영과 관련된 여러 작업을 수행할 수 있는 권한을 가집니다.OPEN: 권한이 필요 없는 요청으로, 모든 사용자에게 허용됩니다. 이 카테고리는 일반적..
MyBatis의 bind 태그 사용법MyBatis는 SQL 쿼리를 작성하는 데 유용한 다양한 태그를 제공합니다. 그 중 하나가 bind 태그입니다. bind 태그는 동적 SQL을 작성할 때 변수를 바인딩하여 쿼리를 더 유연하게 만들어 줍니다. 최근 프로젝트에서 복잡한 SQL 쿼리를 작성하면서, bind 태그를 활용하면 SQL 쿼리를 더 깔끔하게 작성할 수 있다는 것을 알게 되었습니다. 이를 계기로, 이번 포스팅에서는 bind 태그의 사용법과 예제를 살펴보겠습니다.1. bind 태그란?bind 태그는 SQL 쿼리에서 사용할 변수를 정의하고 값을 바인딩하는 데 사용됩니다. 이를 통해 SQL 쿼리의 가독성을 높이고, 동적으로 변수를 설정할 수 있습니다.2. 사용법bind 태그의 기본 사용법은 다음과 같습니다...
시작하면서이전 포스팅에서는 어드바이저와 커스텀 어노테이션을 사용하여 경험치 시스템을 구현했습니다.(2024.06.07 - [Web/Spring] - 경험치 시스템 구현(1): 어드바이스와 커스텀 어노테이션 활용) 그러나 현재 구현에서는 모든 활동에 대해 동일한 경험치를 부여하도록 되어 있습니다. 이번에는 좋아요를 누르거나 사진을 제출할 때 각각 다른 경험치를 부여하고, 특정 조건을 만족할 때만 경험치를 부여하는 기능을 추가하고자 합니다. A. 프로젝트 구성아래처럼 구성된 API 서버에에서 아래의 요구사항을 구현하려고 합니다.Spring Boot, Gradle, kotlin B. 요구사항1. 사용자가 게시글에 좋아요를 누를 수 있다. (/api/customer/emoji/like)2. 이번달에 등록된 게시..
시작하면서이번 포스트에서는 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..