소통하는 개발자 Sean
article thumbnail
쿠버네티스 환경에서 여러 Pod가 하나의 Redis 세션을 참조하는 구조
Web Programming/Spring Boot 2024. 2. 25. 19:26

쿠버네티스(Kubernetes) 환경에서 스프링부트(Spring Boot) 애플리케이션을 배포하고, Pod을 2개로 설정했을 때 로그인 문제가 발생했습니다. 로그인을 해도 다시 로그인을 하게 되는 상황이였는데요, 스프링 시큐리티(Spring Security)를 사용할 때, 세션 정보가 한 Pod에만 저장되어 있기 때문에 로드 밸런싱으로 인해 사용자 요청이 다른 Pod로 전송될 때 세션 정보를 찾을 수 없어 로그인 문제가 발생한것으로 보입니다. 스프링 세션 + Redis를 사용하여 문제를 해결해보도록 하겠습니다. Redis를 사용하여 세션을 공유하는 과정을 단계별로 설명하겠습니다. 이 과정은 스프링 부트와 스프링 세션(Spring Session) 라이브러리를 사용하여, 세션 정보를 중앙 집중식으로 관리하는..

article thumbnail
셀렉트&드래그앤드롭 다중 파일 서버로 전송하기 (문제해결)
Web Programming/Spring Boot 2023. 10. 4. 01:08

파일 선택창을 통해 파일을 업로드 할 수도 있고, 파일의 드래그 앤 드롭을 통해 파일을 업로드 할 수 있다. 선택창과 드래그 앤 드롭을 혼합하여 여러개의 파일을 보낼 수도 있어야 한다. 프로젝트를 하면서 겪은 문제는 "드래그 앤 드롭"을 사용했을 때 file이 서버로 전달되지 못했던 것이다. 문제가 되었던 코드를 순차적으로 살펴보자. input type='file'에 드래그앤 드롭 파일 추가해서 서버로 넘기기 (실패) 파일 선택창을 통해 파일을 선택하면 input type='file'을 통해 파일이 들어가기 때문에 name="files"이 위에 보이는 post-register의 files 파라미터로 매핑이 된다. 드래그앤 드롭으로 파일을 등록하면 input type='file'에 value로 등록되지 않..

article thumbnail
@Valid 사용해서 View에서 에러 표현하기 (쉬운 방법)
Web Programming/Spring Boot 2022. 11. 19. 12:08

input 값에 대한 validation을 하고 싶을 때, 1. view 쪽에서 API를 호출한다. 2. API는 실패에 대한 메시지를 model에 담아서 보내준다. 3. view 에서는 model에 있는 실패 메세지가 있는지 thymeleaf를 사용해서 처리한다. 요러한 플로우를 통해서 이루어진다고 생각해요. (더 멋지게 구현할수도 있겠지만요...) 지금은 input 값이 하나라서 다행이지만, 회원가입 같은 여러개의 필드값을 받는다면 어떨까요? 해당 API에서 그 필드값들을 하나씩 분석해서 model에 메세지를 넣어주는건 쉽지 않을거에요. 조금의 설정만 해두면, 위와 같은 문제를 쉽게 해결해줄 수 있는 '@Valid' 가 있습니다!! @Valid - 클라이언트 측에서 넘어온 데이터를 객체에 바인딩할 때..

article thumbnail
[부트 빌드 에러] FAILURE: Build failed with an exception. java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector
Web Programming/Spring Boot 2022. 8. 19. 10:29

발생원인 프로젝트를 개발하던 중, C 드라이브에 있는 JDK가 지저분하게 쌓여있어서, 쓰는 것들만 남기고 다 지웠습니다. 실행이 잘 되던 프로젝트를 다시 빌드 해보니, 에러 발생!! "FAILURE: Build failed with an exception. - What went wrong: Execution failed for task ':compileJava'. > java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector (in unnamed module @0x4bbf714f) cannot access class com.sun.tools.javac.code.Symbol$TypeSymbol (in mod..

article thumbnail
[boot] 테스트 시 오류 (Execution failed for task ':test')
Web Programming/Spring Boot 2021. 9. 4. 17:41

Execution failed for task ':test'. > No tests found for given includes: [com.sjs.jsvill.repository.MemoRepositoryTests.testInsertDummies](filter.includeTestsMatching) * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 해결책 : ctrl+alt+s -> settings -> Build Tools -> Gradle 테스트구동을 Gradle -> inte..

article thumbnail
[Spring Boot] Hibernate 사용 시 Error creating bean with name 'entityManagerFactory' 해결방법 여러개!
Web Programming/Spring Boot 2021. 6. 10. 23:47

오류 내용 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.J..