SpringBoot

    [Trouble Shooting] Web server failed to start. Port 8080 was already in use

    [Trouble Shooting] Web server failed to start. Port 8080 was already in use

    개발 환경 Build : Gradle SpringBoot : 2.7.5 Java : 11 OS : Mac 발생 Description: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that's listening on port 8080 or configure this application to listen on another port. > Task :OneyearfourcutApplication.main() FAILED 원인 실행시키려는 애플리케이션의 Port가 이미 사용되고 있어 충돌이 발생하여 위와 같은 에러가 발생한 것이다. 해결 방법 1. 기존 Port 종료 해당 Port를 ..

    [SpringBoot] AWS S3 파일(이미지) 업로드 및 삭제하기 구현

    [SpringBoot] AWS S3 파일(이미지) 업로드 및 삭제하기 구현

    개발 환경 Build : Gradle SpringBoot : 2.7.5 Java : 11 OS : Mac 요구사항 client로부터 form-data의 이미지 파일을 요청받으면 해당 이미지를 S3 버킷에 업로드한 뒤 DB에 버킷의 경로를 저장하려고 함. 이미지는 1개의 이미지를 요청 및 업로드함. 구현 - AWS 관련(버킷 생성 등) 설정은 프로젝트가 끝난 뒤 정리할 예정 의존성 추가하기 https://github.com/awspring/spring-cloud-aws // AWS S3 Upload implementation 'io.awspring.cloud:spring-cloud-starter-aws:2.4.2' S3 관련 환경변수 설정하기(yml) cloud: aws: credentials: acces..

    [SpringBoot] MockMvc - multipart() POST외 다른 HTTPMethod 사용하기

    개발 환경 Build : Gradle SpringBoot : 2.7.5 Java : 11 OS : Mac 요구사항 RestDocs API 문서화를 위해 MockMvc를 이용하여 Controller 테스트 코드를 작성해야 함. 테스트할 코드는 form-data로 이미지 파일과 텍스트를 받아 리소스를 수정하는 메서드(PATCH) 따라서 MockMvc.perform으로 진행할 때 multipart()를 사용해서 테스트를 진행해야 하는데, multipart()는 기본적으로 POST로 하드 코딩되어 있음. // MockMvcRequestBuilders /** * Create a {@link MockMultipartHttpServletRequestBuilder} for a multipart request, * us..

    [TroubleShooting] SpringBoot Controller Test - MockMvc 302 Found, 403 Forbidden

    [TroubleShooting] SpringBoot Controller Test - MockMvc 302 Found, 403 Forbidden

    개발 환경 Build : Gradle SpringBoot : 2.7.5 Java : 11 OS : Mac 발생 - 403 Forbidden RestDocs를 사용하여 API 문서화 작업을 하려고 Controller에서 테스트 코드를 작성 후 테스트를 진행하였고, 403 Forbidden 에러가 발생했다. @WebMvcTest(controllers = ArtworkController.class) @MockBean({JpaMetamodelMappingContext.class, ClientRegistrationRepository.class}) @AutoConfigureRestDocs public class ArtworkControllerTest { @Autowired private MockMvc mockMvc..

    [SpringDataJPA] 쿼리메서드 참조 객체의 필드 사용

    [SpringDataJPA] 쿼리메서드 참조 객체의 필드 사용

    개발 환경 Build : Gradle SpringBoot : 2.7.5 Java : 11 OS : Mac 요구사항 특정 GalleryId를 가진 작품(Artwork)List를 생성시간 기준 내림차순으로 응답하는 로직 즉, FindAll + 특정 FK(GalleryId)를 가진 Artwork만 조회하는 기능 + 정렬 필요 조건 Gallery : Artwork = 1:N 매핑 // Auditable에는 생성시간과 수정시간이 들어있음. // Artwork Entity @Entity public class Artwork extends Auditable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long artworkId; ... @Man..

    [Trouble Shooting] MaxUploadSizeExceededException

    [Trouble Shooting] MaxUploadSizeExceededException

    개발 환경 Build : Gradle SpringBoot : 2.7.5 Java : 11 OS : Mac 발생 포스트맨으로 form-data 이미지 파일을 POST 요청을 보냈을 때 다음과 같은 에러가 발생했다. org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field image exceeds its maximum permitted size of ..

    [에러해결] HttpMediaTypeNotAcceptableException: Could not find acceptable representation

    [에러해결] HttpMediaTypeNotAcceptableException: Could not find acceptable representation

    발생 서비스 계층과 API 계층 연동 복습을 진행하며 계층 분리를 위해 mapstruct를 이용해 mapper를 구현하고, mapper에 필요한 Dto 클래스들을 구현하여 포스트맨으로 테스트를 진행했는데 다음과 같은 에러를 만났다. Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation] 더보기 Controller 클래스의 일부 코드(Post 요청에서 에러가 발생하여 Post 메서드 관련) import com.example.spring.coffee.dto.CoffeePatchDto; import com.example.spring.coffee.dto.CoffeeP..