SpringBoot

SpringBoot

SpringBoot Async를 이용한 multipartfile처리

문제 발생 @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..

SpringBoot

OneToMany 매핑 시 mappedBy 옵션 사용하여야하는 이유

문제 발생 Notice.kt class Notice { ... @OneToMany var languageUsage: MutableList = ArrayList() protected set ... } LanguageUsage.kt //TimeEntity는 JPA Auditing 기능임. class LanguageUsage: TimeEntity(), Persistable, Serializable { ... @Id @ManyToOne @JoinColumn(name = "language_id", nullable = false) val language: Language = language @Id @ManyToOne @JoinColumn(name = "notice_id", nullable = false) val n..

SpringBoot

Spring Author Auditing 오류

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를 상속받..

SpringBoot

Spring Async 사용 시 Security Context 전파 오류

문제 상황 Async 메서드를 통한 파일 처리(S3 upload)에서 SecurtyContext.getCredentials 작동하지 않음. 원인 @Async 선언으로 비동기 작업을 수행하는 메서드는 쓰레드가 변경되기에 threadHolder에 저장한 값을 조회하여 사용하는 SecurityContext를 활용할 수 없어 이러한 문제가 발생했습니다. 해결 비동기 함수에 진입 전에 조회하여 파라미터로 전달함으로써 사용하도록 수정했습니다.

SpringBoot

UserDetailsService를 통해 받아온 UserDetails를 활용한 LazyLoading 구현 (OpenEntityManagerInView)

문제 상황 @GetMapping("/test") fun getTest( @AuthenticationPrincipal user: User? ): StudentInfoResponse { return (user as Student).toStudentInfoResponse() } @AuthenticationPrincipal 어노테이션을 이용하여, 로그인시 userDetailsService에서 가져온 userDetails 정보를 getMyInfo 함수에서 사용하고자 했습니다. @Where(clause = "user_is_delete = false") @SQLDelete(sql = "UPDATE `user` SET user_is_delete = true where id = ?") @Table(name = "user..

SpringBoot

SpringBoot WAS 기본 이해

기본적으로 서버는 WebServer를 앞에 두고, WAS를 통해 db 커넥을 비롯한 작업들을 수행한 뒤 다시 내보내게 되는데, 이때 WebServer에는 Nginx, Apache 등이 있고, WAS에는 Tomcat 등이 있다. 기본적으로 Spring Boot에는 아파치 톰캣이 내장되어있어 사용자가 서버로 요청을 보내게되면, 특정 포트로 오는 요청을 잡아 SpringBoot 어플리케이션으로 연결시켜주는 것이다. 그렇다면 WAS는 어떻게 스프링 어플리케이션 서블릿과 연동하는걸까? ServeltWebServerFactoryCustomize에서 servlet 생성 → DispatcherServletAutoConfiguration에서 DispatcherServlet 생성 ServeltWebServerFactory..

xlwdn98767
'SpringBoot' 카테고리의 글 목록 (2 Page)