본문 바로가기

Back-End/Spring

(7)
[Spring Boot] AWS S3 로 이미지 업로드하기 AWS EC2 서버를 사용하면서 이미지 처리를 위해 AWS 에서 제공하는 S3 를 사용하려고 합니다. S3 (Simple, Storage, Service) 는 AWS 에서 제공하는 인터넷 스토리지 서비스입니다. 그럼 S3 버킷을 만들어보겠습니다. 1. S3 버킷 만들기 1) AWS 에 접속하여 S3 를 검색한 후, 아래와 같이 버킷 만들기 를 클릭합니다. 2) 아래 화면에서 버킷 이름과 리전을 입력합니다. 3) 객체 소유권은 그대로 두고, 퍼블릭 액세스 를 아래와 같이 설정해줍니다. '모든 퍼블릭 액세스 차단' 을 해제한 다음, ' 새 퍼블릭 버킷 또는 액세스 지점 정책을 통해 부여된 버킷 및 객체에 대한 퍼블릭 액세스 차단' 을 선택해줍니다. 4) 버킷 버전 관리와 기본 암호화를 비활성화 로 선택해준 ..
[Spring Boot] Json 과 MultipartFile 한 번에 전달받는 API (feat. Postman) 커뮤니티 게시글을 등록하고 조회하는 API 를 개발하는 도중, 게시글에 업로드할 이미지에 대한 로직을 추가하는 과정에 대해 기록해보려고 합니다. 1. @RequestPart 게시글의 제목, 내용 등은 Json 형태로 서버로 보내주기 때문에 아래와 같이 @RequestBody 로 해주었습니다. 하지만 이미지 파일을 받아오려면 몇 가지 변경해야할 부분이 있습니다. @PostMapping("/post") public ResponseEntity createPost(@Valid @RequestBody ExchangePostDTO exchangePostDTO, BindingResult bindingResult, HttpServletRequest request) 이미지를 받아오기 위해 MultipartFile 을 추..
[Spring Boot] Spring Security 사용 중 Swagger 401 에러 페이지 회원가입을 구현할 때까지만 해도 잘 나왔던 swagger 페이지가 로그인 구현을 한 후에는 401 에러 페이지가 나옵니다. 로그인을 구현하기 위해 서버에 Spring Security 를 적용하였는데, Spring Security 는 권한 부여를 위한 Role 이라는 개념을 사용하기 때문에 Swagger 에 접근할 수 있는 Role 을 정의하고, 해당 Role 을 가진 사용자만 Swagger 에 접근할 수 있게 합니다. 이를 해결하기 위해서, Spring Security 에서 Swagger 에 해당하는 url 을 무시하도록 설정하면 됩니다. Spring Security 에서 해당 url 을 무시하도록 설정 아래와 같이 spring security 룰을 무시하게 하는 url 규칙을 설정합니다. public ..
[Spring Boot] Swagger 연결 시 'Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException' 에러 발생 스프링 부트에서 프로젝트를 생성 후 Swagger 를 연결하고 있었는데, 아래와 같은 에러가 발생했습니다. 에러 내용은 다음과 같습니다. org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException Spring boot 2.6 버전 이후에 spring.mvc.pathmatch.matching-strategy 값이 ant_apth_pattern_parser 로 변경되면서 몇몇 라이브러리에서 오류가 발생하고 있었던 것입니다. 따라서, application.properties 파..
[Spring] Spring Tomcat 10 실행 시 에러 (java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener) 맥북 터미널에서 Homebrew 로 tomcat 을 설치한 후 Spring 프로젝트를 실행했는데, 다음과 같은 에러가 발생했습니다. 에러의 원인은 Tomcat 의 버전이 10 이었기 때문이었습니다. Tomcat 10 은 모든 패키지의 이름을 javax.servlet 에서 Jakarta EE 9 의 일부인 jakarta.servlet 으로 바꿨는데, 스프링 부트나 스프링 프레임워크에서는 Jakarta EE 9 를 지원하지 않는다고 합니다. 자세한 에러 설명은 아래 링크를 참고해주세요. Tomcat 10.x throws java.lang.NoClassDefFoundError on javax.servlet.* Deployed servlet based web application at context path [..
[Spring Boot] Spring Boot & MySQL 연동 앞선 포스트에서 스프링 부트 프로젝트를 하기 위해 IntelliJ 에서 기본 셋팅을 마쳤습니다. 이어서 application.yml 을 설정하면서, DB 를 사용하기 위한 MySQL 연동을 해보겠습니다. 1. application.yml 설정 (서버 포트 설정) 1) resources > application.properties 파일을 삭제하고, application.yml 파일을 새로 만듭니다. 2) New > File 에서 application.yml 파일을 새로 만듭니다. 3) 다음과 같이 서버 포트 번호를 8081로 설정합니다. server: prot: 8081 2. MySQL 연동 프로젝트 실행을 하면, 다음과 같은 에러가 뜨는 경우가 발생할 때가 있는데, Database 에 연결할 때 필요한 ..
[Spring Boot] Spring Boot - Spring Initializr 로 프로젝트 생성 Spring 공식 홈페이지에서 제공하는 Spring Initializr 를 이용해 스프핑 부트 프로젝트를 세팅하려고 합니다. 1. Spring Initializr 1) https://spring.io/ 에 접속하여 Projects > Spring Initializr 에 들어갑니다. 2) 다음과 같이 옵션을 선택합니다. SNAPSHOT 이 쓰여있지 않은 버전으로 선택 (SNAPSHOT 은 베타버전으로 생각하면 됩니다.) Metadata: 프로젝트의 패키지 설정 Packaging: Jar / Java: 11 버전으로 선택 3) Dependency 설정은 아래에 따라 필요한 것들로 설정합니다. DB 연동이 없는 프로젝트 Lombok Spring Web Thymeleaf DB 연동을 하는 경우 Spring Da..