본문 바로가기

전체 글110

[Spring Boot] Multipart 이미지 업로드 기능 구현 multipart : 하나의 HTTP 요청에서 여러 개의 데이터(파일, 텍스트 등)를 전송할 수 있도록 도와주는 HTTP의 컨텐츠 타입 일반적으로 웹에서 데이터를 주고받을 때 application/json를 많이 쓰는데 이미지, 동영상 같은 데이터를 단순히 텍스트 형태로만 전송하기엔 어려움이 있다. 그래서 파일 데이터를 포함할 수 있는 multipart/form-data 방식을 사용한다. 이미지 업로드 기능 구현ProductImage 엔티티 생성@AllArgsConstructor@NoArgsConstructor@Builder@Getter@Entitypublic class ProductImage { @Id @GeneratedValue(strategy = GenerationType.IDENTITY.. 2025. 2. 16.
[Spring Boot] 환경 변수 설정 환경 변수 : 운영 체제나 애플리케이션이 실행될 때 설정할 수 있는 전역적인 변수 환경 변수 설정하는 이유우리는 Spring Boot에서 application.yml 파일을 사용해 어플리케이션 설정을 관리했다. 지금까지 한 내용으로는 구글 앱 비밀번호, 구글 아이디, DB 주소, ID, PW 등등 다른 사람이 볼 수 있는 깃허브에 올렸을 때 민감한 정보들이 들어있었다. 이런 보안 문제를 해결하기 위해 환경 변수를 활용하면 깃허브에 코드만 올리고 민감한 정보는 환경 변수에서 불러와서 설정을 하는 방식으로 바꿀 수 있다.환경 변수 설정 방법 (application.yml 파일)spring: mail: host: smtp.gmail.com port: 587 username: ${GOOGLE_.. 2025. 2. 12.
[Spring Boot] Swagger 필터 추가(스프링 시큐리티 엔드포인트) Swagger는 주로 컨트롤러에서 정의된 엔드포인트를 기반으로 API 명세서를 생성한다. 스프링 시큐리티 내에서 처리되는 엔드포인트는 기본적으로 포함되지 않는다. 그래서 OpenApiCustomizer를 사용해 시큐리티에서 처리하는 엔드포인트를 Swagger API 명세서에 포함시킨다. OpenApiCustomizer : Springdoc OpenAPI 라이브러리에서 제공하는 인터페이스 (OpenAPI 커스터마이즈하거나 확장하는데 사용) SwaggerConfig에 추가@Beanpublic OpenApiCustomizer springSecurityLoginEndpointCustomizer(ApplicationContext applicationContext) { // Spring Security에서 관.. 2025. 2. 12.
[Spring Boot] 페이지네이션 설정 페이지네이션(Pagination) : 대량의 데이터를 모두 가져오지 않고 여러 개의 페이지로 나누어 요청 및 표시하는 기법 한 번에 모든 데이터를 가져오면 DB 서버에 과부하가 걸리고 트래픽이 증가할 수 있다. 이렇게 되면 응답 속도가 느려지고 데이터를 화면에 가져오는데 오래걸리게 된다. 이를 방지하기 위해 페이지네이션을 적용해 필요한 데이터만 가져온다.@Operation(summary = "A 목록 조회 - 페이징 처리", description = "A의 특정 페이지 목록을 조회하는 기능입니다.")@GetMapping("/list")public ResponseEntity getList(int page, int size) { List response = aService.list(page, siz.. 2025. 2. 12.
[Spring Boot] DB 이중화 (Master-Slave) 애플리케이션이 커지게 되면서 데이터베이스의 부하도 함께 증가한다. 만약 단일 DB 서버로 운영하면 트래픽이 급격히 늘어날 때 성능 저하가 발생할 것이다. 이를 해결하기 위한 방법으로는 DB 이중화가 있다. 데이터의 읽기, 쓰기가 하나의 DB 서버에서 일어나는 단일 DB를 사용하는 프로젝트에서 DB 이중화를 해보겠다. 나는 읽기용 DB 서버, 쓰기용 DB 서버를 나눠서 작업할 것이기 때문에 Master-Slave (Active-Passive) 형태로 DB 구성을 해주겠다.https://taeh00n.tistory.com/entry/Database-DB-%EB%B6%84%EC%82%B0-DRP-HAProxy-mariaDB-Master-Slave-%EB%B0%A9%EC%8B%9D [리눅스] DB 분산 (DRP.. 2025. 2. 12.
[Spring Boot] Swagger API Docs 작성하기 Swagger : RESTful API 문서화 도구Swagger는 API를 자동으로 문서화하는 도구이다. API의 엔드포인트, 요청 및 응답 형식으로 자동으로 생성하고 API 테스트 환경도 제공하므로 직접 API를 호출하고 결과를 확인할 수 있게 해준다. 라이브러리 추가implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'Swagger 설정 클래스 추가@Configurationpublic class SwaggerConfig { @Bean public OpenAPI openAPI() { return new OpenAPI() .components(new Components()) .. 2025. 2. 11.