728x90

개발 304

Spring - Swagger API 명세 작성

Swagger 의존성 추가 (Gradle) Swagger 설정 추가 API 그룹 설정 API 상세 정보 설정 API Data Schema API Response * 본 Swagger는 Spring 3.x Java 17에서 작성되었다. Swagger Swagger는 API 문서화 및 테스트 도구로서, 개발자가 RESTful API를 더 쉽게 문서화하고 API 엔드포인트를 테스트하고 이해할 수 있도록 돕는 오픈소스 프레임워크다. 1. API 스펙 정의 / 2. 자동 문서화의 장점이 있다. Swagger 의존성 추가 (Gradle) implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' Spring 3.x 버전에서는 위 코드를 Grad..

개발/TMP 2023.12.21

DB 대용량 데이터 처리, 동시성 이슈 해결 방법 (Redis)

Synchronized 사용 Synchronized의 문제점 DB를 활용한 데이터 정합성 맞추기 Pessimistic Lock Optimistic Lock Named Lock Lettuce Redisson 간단한 로직을 통해 재고 감소 코드를 아래와 같이 작성한다고 가정한다. - StockService.java @Service public class StockService { private final StockRepositroy stockRepositroy; public StockService(StockRepositroy stockRepositroy) { this.stockRepositroy = stockRepositroy; } @Transactional public void decrease(Long i..

개발/Redis 2023.12.19

Docker - 초간단 Docker 사용법 (Spring, EC2)

- Docker Docker는 컨테이너 기반 가상화 기술을 사용하여 애플리케이션을 패키징하고 배포하는 오픈 소스 플랫폼이다. Docker를 사용하면 코드를 컨테이너 이미지로 패키징하고, 이미지를 독립적으로 실행 할 수 있다. Docker의 주요 특징은 1. 이식성 2. 빠른 배포 3. 확장성 4. 자동화 의 장점이 있다. 주요 특징을 가지고 소프트웨어 개발 및 배포 프로세스를 단순화하고, 애플리케이션의 이식성과 확장성을 향상시키는 데 도움이 된다. https://www.docker.com/ Docker: Accelerated Container Application Development Docker is a platform designed to help developers build, share, and ..

개발/CI, CD 2023.12.14

CodingTest - 정렬 (Comparable, compareTo, Collections.sort)

Comparable : 해당 인터페이스는 객체의 비교를 제공하기 위해 구현된다. compareTo() : Comparable 인터페이스의 일부로, 비교하려는 두 객체를 인자로 받아 비교 결과를 반환한다. Collections.sort : 해당 메서드를 사용하여 리스트의 요소를 정렬할 때, 해당 요소들의 compareTo 메서드가 호출되어 정렬이 수행된다. - 기본 구조 public int compareTo(Integer other) { return this.value - other.value; } - Example import java.util.*; class Point implements Comparable{ public int x, y; Point(int x, int y){ this.x=x; this..

개발/CodingTest 2023.12.12

Spring - Spring <-> AWS S3 첨부 파일 업로드, 삭제 (첨부 파일 업로드 수정 및 삭제)

1. S3 생성 AWS S3를 통해 bucket을 생성한다. - bucket : 다수의 객체를 관리하는 컨테이너로 파일시스템이라고 보면 된다. 체크를 하지 않으면 public으로 해당 버킷에 접근 할 수 있다. public으로 접근 가능하다는 것은 외부에서 해당 버킷에 접근이 가능하다는 뜻이다. 2. 사용자 생성 (IAM) AWS IAM을 통해 사용자를 생성한다. 사용자의 권한 정책으로 AmazonS3FullAccess 권한을 부여해준다. 3. 액세스 키 생성 새롭게 생성한 사용자를 선택하여 액세스 키를 생성해준다. 생성한 액세스키, 비밀 액세스 키는 따로 확인 가능하도록 보관해놓는다. 4. 스프링 연동 4.1. build.gradle 의존성 추가 implementation 'org.springframe..

Spring - REST API 간단한 연습 (RestController 사용)

지금까지 프로젝트를 진행하면서 REST API에 대한 반환값으로 String 즉, View로 전달하는 방식을 많이 사용하였다. @RestController를 사용하는 방법 또한 크게 다른점은 없지만 많이 사용해보지 않았기 때문에 익숙함을 위해 연습하기 위한 작은 프로젝트다. - ERD - RestaurantApi.java @RequiredArgsConstructor @RestController public class RestaurantApi { private final RestaurantService restaurantService; @GetMapping("/restaurants") public List getRestaurants() { return restaurantService.getAllRestau..

Project - 돈 갚아라 ( 문제 해결 / TMP)

** - post 전송 시 crsf 까먹지 말기!! ** 1024 포트 이하 sudo 꼭 붙여서 실행하기 1. git bash에서 프로젝트 폴더로 가서 ./gradlew build 를 통해 jar 파일을 생성한다. - plain은 사용하지 않는다. - java 설치해야한다. - 보안 그룹 확인 잘하기 - 앱 계속 유지되게 하기위해 사용한다. - 애플리케이션 끄는 방법 - 뭔 aws에 배포할 때 return 앞에 /money/moneyForm처럼 /를 맨앞에 붙이게되면 //로 인식되어 오류가 발생한다!!! 조심!!! - filed를 통해 값을 전달 할 수 있다. object 이름이랑 전달 받는 객체명이랑 같으면 매핑되서 전달된다. - 주소값이 다르기 때문에 문자열이 서로 다른 것으로 인식되기 때문에 equ..

Spring Test Code 관련 - (MockMvc 등... 여러가지)

- MockMvc - MockMvc 1. Spring MVC 컨트롤러를 테스트하기 위해 사용된다. 이를 통해 웹 애플리케이션의 HTTP 요청과 응답을 시뮬레이션하고 테스트하는 것이 가능하다. - @AutoConfigureMockMvc 1. Mock 객체를 자동 주입하기 위해 사용한다. @SpringBootTest @AutoConfigureMockMvc public class MyControllerTest { @Autowired private MockMvc mockMvc; // 테스트 코드 작성 } 2. 위와 같이 MockMvc를 주입 받아 테스트 코드를 작성 할 수 있다. - ObjectMapper 1. JSON 데이터와 Java 객체 간의 변환을 수행하는 데 사용되는 라이브러리다. @Test @Disp..

Spring - 페이징, Querydsl RE

- Page - Pageable - PageRequest - 페이징 구성 예시 - Querydsl - JpaQueryFactory - Querydsl 추가 및 예시 - 페이징, Querydsl 적용 - Page - Page는 페이징된 데이터와 페이징 정보를 포함하는 객체이다. 쿼리 결과의 일부 데이터를 나타내며, 페이지 정보, 총 항목 수, 페이지 번호, 데이터 목록 등을 포함한다. getContent() 현재 페이지의 데이터 목록을 반환한다. getTotalPages() 총 페이지 수를 반환한다. getTotalElements() 전체 항목 수를 반환한다. getNumber() 현재 페이지 번호를 반환한다. getSize() 페이지 크기 (한 페이지당 항목 수)를 반환한다. - Pageable - Pa..

CodingTest - Recursive, Tree, Graph(DFS, BFS 기초)

1. 재귀 함수 2. DFS 깊이 우선 탐색 2.1. 스텍 프레임 3. BFS 레벨, 너비 우선 탐색 - 재귀 함수 - 재귀 함수는 자기 자신을 호출하는 함수를 말한다. - 기본적으로 if else를 통해 특정 조건에 자기 자신을 호출하여 원하는 값을 도출해낸다. - 재귀 함수를 이용한 팩토리얼 import java.util.Scanner; class Main { public int DFS(int v) { if (v == 1) { return 1; } else { return v * DFS(v - 1); } } public static void main(String[] args) { Main main = new Main(); Scanner scanner = new Scanner(System.in); in..

개발/CodingTest 2023.11.09
728x90