webimplementation 'org.springframework.boot:spring-boot-starter-web' DB// DBimplementation 'org.springframework.boot:spring-boot-starter-data-jpa'implementation 'org.mariadb.jdbc:mariadb-java-client' spring securityimplementation 'org.springframework.boot:spring-boot-starter-security' jwtimplementation 'io.jsonwebtoken:jjwt-api:0.11.5'implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'implementa..
be

파이참 환경에 Locust 설치pip install locust locustfile.py 파일 생성locustfile.py에 테스트하고 싶은 HTTP 요청 URL을 추가한다.from locust import HttpUser, task, betweenclass UserBehavior(HttpUser): wait_time = between(1, 5) # 1~5초 사이 대기 @task def index_page(self): self.client.get("/") # 메인 페이지 요청 @task def about_page(self): self.client.get("/about") # About 페이지 요청 locust 명령어 입력 후 테스트locust..

NFS란?네트워크를 통해 원격 파일 시스템을 마치 로컬 디렉토리처럼 사용할 수 있도록 하는 프로토콜주로 리눅스/유닉스 시스템에서 많이 사용된다. 프론트엔드 설정 (서버)NFS 패키지 설치apt install nfs-kernel-server 이미지 파일을 업로드할 디렉토리를 만들고, 권한을 777로 설정해줘서 모두 접근할 수 있고 읽기 쓰기를 할 수 있게 설정해준다.mkdir imageschmod 777 /var/www/html/images 설정 파일에서 접근 권한 설정vi /etc/exports NFS 서버에서 공유할 디렉토리를 정의하는 설정이다.NFS를 통해 특정 네트워크(10.10.10.0/24)에 /var/www/html/images 디렉토리를 공유하는 설정/var/www/html/images [..

여러 개의 이미지를 한 번에 넘겨받아 저장해야 하는 경우 멀티파트(Multipart)로 처리해야 한다. 이미지 파일 업로드 기능 구현 상품에 대한 정보와 이미지들을 넘겨받아 DB에 저장하고, 로컬 경로로 이미지 파일을 업로드하는 예제 엔티티 생성Product 엔티티public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long idx; private String name; private int price; @OneToMany(mappedBy = "product") List productImageList = new ArrayList();} ProductImage 엔..

스프링 부트에서 소셜 로그인을 구현하기 OAuth 라이브러리 추가 build.gradle에 추가implementation 'org.springframework.security:spring-security-oauth2-client' 카카오 로그인 설정https://developers.kakao.com/docs/latest/ko/kakaologin/common Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com ✅ Redirect URI 설정카카오 어플리케이션에서 Redirect URI 설정해준다.http://localhost:8080/login/oau..
스프링에서 유효성 검사는 javax.vaildation 패키지의 어노테이션을 활용해서 간편하게 적용할 수 있다. 회원가입, 게시글 작성 등에서 입력값이 올바른지 확인하는 과정에서 Validation을 통해 유효성 검사를 한다. Validation 적용 방법@Valid 사용@Valid 어노테이션을 이용해 컨트롤러에서 DTO의 유효성을 검사한다. DTO에 선언된 검증 조건을 자동으로 확인한다.만약 유효성 검사에 실패하면 자동으로 400 Bad Request 에러가 발생한다.@RestController@RequestMapping("/user")public class UserController { @PostMapping("/signup") public void signup(@Valid @Request..

개발 도구(IntelliJ)에서 환경변수 설정하기Edit Configuration에서 환경변수를 설정하는 방법이다. 디버그 옆 더보기 -> Edit 클릭 Modify options 클릭 Environment variables 클릭 Environment variables 옆에 Edit 버튼 클릭 + 버튼을 누르고 설정할 환경변수의 이름과 value를 설정해주면 된다 ! 프로젝트에서 환경변수 사용하기 application.yml${환경변수 이름} 으로 사용하면 된다.spring: datasource: url: jdbc:mariadb://${DB_URL} driver-class-name: org.mariadb.jdbc.Driver username: ${DB_ID} ..
페이지네이션(Pagenation)이란?대량의 데이터를 일정한 크기(페이지)로 나누어 출력하는 방식이다.-> 이 방식은 성능 최적화와 사용자 경험 개선을 위해 필수적으로 사용된다.예를 들어, 데이터가 100개 있을 때 한 페이지당 10개씩 보여준다면 총 10페이지로 나누어 출력된다.Spring Data JPA에서 페이징 처리스프링 부트에서는 Spring Data JPA의 Page와 Pageable 인터페이스를 사용해서 간편하게 페이징을 구현할 수 있다. DTO페이징한 데이터를 담을 DTO 클래스를 생성한다.Course를 페이징할 것이기 때문에 Course 응답 시 사용하는 CourseResponse를 List로 변수를 만든다. page : 현재 페이지 번호size : 한 페이지당 데이터 개수totalEl..
DataSource로 DB 이중화를 해볼 것이다. DB를 Master, Slave 구조로 설계하여Master DB는 쓰기 (Innsert, Update, Delete) 작업을 수행하고, Slave DB는 읽기(Select) 작업을 수행해서 성능을 향상시키는 방법이다. build.gradle에 라이브러리 추가jpa를 추가해주고, mariadb를 사용할 것이기 때문에 mariadb client 라이브러리를 추가해준다.implementation 'org.springframework.boot:spring-boot-starter-data-jpa'implementation 'org.mariadb.jdbc:mariadb-java-client' application.yml에 설정 추가application에 dat..

Swagger란? Swagger는 RESTful API를 설계, 문서화, 그리고 테스트할 수 있도록 도와주는 오픈 소스 프레임워크API의 설계 및 관리에 널리 사용된다. 공식 사이트 : https://swagger.io/ API Documentation & Design Tools for Teams | SwaggerSwagger and OpenAPI go hand‑in‑hand. Swagger offers powerful and easy to use tools to take full advantage of the OpenAPI Specification. See how we do itswagger.io Swagger API 사용하기build.gradle에 추가implementation 'org.springd..