이전 게시글 프로젝트 5
기존 프로젝트에서 S3와 연결을 위한 클래스 추가와 기존 엔티티 변경
MySQL 관련 엔티티 변경
- 기본에는 모든 PK인 @Id 어노테이션에 @GeneratedValue 어노테이션의 GenerationType을 AUTO로 자동으로 설정해주도록 하였다.
- DDL-AUTO가 UPDATE여서 알아서 해주었지만, EC2 인스턴스에서는 UPDATE가 불가능했다.
- 따라서 DDL-AUTO를 none 으로 바꾸고(기존 테이블이 있고, 지식 데이터를 넣어야 하기 때문에), mysql 테이블의 PK(int 형 PK)에 AUTO_INCREMENT 를 넣어서 자동으로 테이블 마다 1씩 늘어나게 만들었다.
- 이에 따라서 자바의 엔티티에도 AUTO 대신 GenerationType을 IDENTITY로 바꿔줘서 MySQL의 AUTO_INCREMENT와 같게 만들어 줘서 에러가 안나게 했다.
- 위의 이미지처럼 되어있던 AUTO를 아래 이미지처럼 IDENTITY로 바꿨다.
S3 연결을 위한 클래스 추가
- 추가하기 전에 기존 회원의 프로필 사진 변경 및 회원가입할 때 default.png 파일을 위한 코드로 바꿨다. (UserController)
- 아래 이미지에서 처럼 회원가입 할 때 프로필을 S3에 올린 default.png의 URL을 DB에 넣는다.
- 이후 회원 변경에서는 변경한 이미지를 업로드 후 S3 이미지의 URL을 가져와서 DB에 넣는다.
- 만약 이전 이미지가 default.png가 아닐 경우, 기존 이미지를 S3에서 삭제하고 바꾼 이미지의 URL을 DB에 넣는다.
- uploadFile(file, "static"); -> S3의 static 폴더 안에 이미지를 업로드 한다는 의미.
1. S3 기본 설정 클래스
- application.yml 에서 작성한 액세스 키, 비밀 액세스 키, 지역(서울) 을 가져와 변수로 선언한다.
- amazonS3Client 메소드는 S3에 접근하기 위한 사용자 설정이다. -> S3FullAccess를 가지면 접근 가능.
2. S3 파일(이미지) 업로드 후 URL 가져오는 클래스
- uploadFile 메소드는 유저가 변경한 이미지와 "static" 폴더 경로를 가져와서 File 객체로 바꾼 후 upload 메소드로 보내준다.
- upload 메소드는 File 객체의 파일을 putS3 메소드로 보내 업로드 후 로컬 이미지를 삭제한 후 반환된 URL을 반환하는 메소드이다.
- putS3 메소드는 File 객체를 S3에 직접 업로드하고 반환 값인 URL(이미지 URL)을 문자열로 바꿔서 반환하는 메소드이다.
- removeNewFile 메소드는 S3에 이미지를 업로드 할 때 로컬(EC2 인스턴스에서 .jar 파일 실행한 폴더)에 이미지를 저장하는데 이 저장한 파일은 쓸모가 없으니 삭제하는 메소드이다.
- convert 메소드는 MultipartFile(유저가 바꾼 이미지 파일 객체)를 받아서 File 객체로 변환 후 반환하는 메소드이다.
참고 자료
https://europani.github.io/aws/2022/03/03/004-spring-s3.html
'Spring Boot (프로젝트)' 카테고리의 다른 글
[쇼핑몰 프로젝트] 1. 페이지 기획(feat. 피그마) (0) | 2023.10.28 |
---|---|
[쇼핑몰 프로젝트]PG 시스템을 공부하기 위한 쇼핑몰 토이 프로젝트 기획 (0) | 2023.10.28 |
[스프링 부트] 프로젝트 5 S3 관련 설정 추가 (0) | 2023.04.17 |
[스프링 부트] EC2 인스턴스에 스프링부트, MySQL, S3, 도커 연결(아마존 리눅스 2) (0) | 2023.04.16 |
[스프링 부트] 프로젝트 4 백엔드 구현 (0) | 2023.04.02 |
댓글