문제 발생 @RestController class Controller( private val imageService: ImageService ) { @PutMapping("/image") fun addImage(@RequestPart image: MultipartFile) { imageService.upload(image) } } interface ImageService { fun upload(image: MultipartFile) } @Serice class ImageServiceImpl: ImageService { @Async override fun upload(image: MultipartFile) { ... } } 위와 같이 Async 어노테이션을 통해 비동기 함수를 통해 multipartfile..
문제 상황 Async 메서드를 통한 파일 처리(S3 upload)에서 SecurtyContext.getCredentials 작동하지 않음. 원인 @Async 선언으로 비동기 작업을 수행하는 메서드는 쓰레드가 변경되기에 threadHolder에 저장한 값을 조회하여 사용하는 SecurityContext를 활용할 수 없어 이러한 문제가 발생했습니다. 해결 비동기 함수에 진입 전에 조회하여 파라미터로 전달함으로써 사용하도록 수정했습니다.
Async Annotation을 사용하여 여러 multipartfile을 s3에 처리하는 기능을 포함하고 있는 Company Entity 생성 함수를 비동기로 실행하도록 처리하였습니다. @Async override fun companySignup(req: CompanySignupRequest, emailCheckCode: String, companyIntroduction: CompanyIntroductionRequest) { if (checkEmail(req.companyContact.email, emailCheckCode)) { ... } 그러나 test하던 중 API 자체는 200이 떴으나, 입력 값이 제대로 들어가지 않음을 확인할 수 있었습니다. (Company는 User를 상속받고 있었으며, In..