본문 바로가기
반응형

개발/SpringBoot41

SpringBoot Redis Cache 적용 - @Cacheable, @CacheEvict SpringBoot에서 Redis를 활용하여 Cache를 적용하는 방법을 알아본다. 보통 로컬 Cache를 적용할 때 Caffeine Cache 또는 Ehcache를 적용할 수 있는데 글로벌 Cache로 Redis도 쉽게 적용이 가능하다. 1. 의존성 설정redis 적용을 위해서 'spring-boot-starter-data-redis' 의존성을 추가해준다.implementation 'org.springframework.boot:spring-boot-starter-data-redis:3.1.0' 2. Config 설정application.yml 이나 application.properties 파일에 아래와 같이 redis 설정을 진행한다. 필자는 properties 파일 기준으로 작성을 했다. # redi.. 2024. 10. 14.
Invalid value type for attribute 'factoryBeanObjectType': java.lang.String 에러 해결 SpringBoot 프로젝트에 MyBatis 적용을 위해서 Gradle에 의존성을 주입하고 실행하니 아래와 같은 에러가 발생했다.Invalid value type for attribute 'factoryBeanObjectType': java.lang.String 확인해보니 SpringBoot 버전과 MyBatis 버전의 문제였다. 필자 같은 경우 SpringBoot는 3.3.4에, MyBatis는 아래와 같이 3.0.1 버전을 찾아서 적용했었다.implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.1'  이 버전을 3.0.3 버전으로 변경해주니 해결 되었다. implementation 'org.mybatis.spring.boot:.. 2024. 10. 9.
SpringBoot3 CircuitBreaker Resilience4j 알아보기 CircuitBreaker Fault Tolerance(=장애 허용 시스템) 에서 사용되는 대표적인 패턴으로 서비스에서 타 서비스 호출 시 에러, 응답지연, 무응답, 일시적인 네트워크 문제 등을 요청이 무작위로 실패하는 경우에 Circuit를 오픈하여 장애가 다른 서비스로 전파되지 못하도록 방지하고 미리 정의해놓은 Fallback Response를 보내어 서비스 장애가 전파되지 않도록 하는 패턴이다. CircuitBreaker를 사용하는 목적은 애플리케이션의 안정성과 장애 저항력을 높이는 데 있다. 상태 정상 Client -> Service A -> Circuit Breaker (정상 상태: Bypass Traffic) -> Service B 장애상황 Client -> Service A Circuit B.. 2023. 10. 8.
SpringBoot AWS S3 한글명 파일업로드 에러 SpringBoot에서 AWS S3에 파일 업로드 중 오류가 발생했다. 테스트 시 문제없이 동작하던 코드였는데 확인해보니 한글 파일명이 문제가 되었다. 아래 코드와 같이 S3에 업로드 되는 파일명은 중복 방지를 위해 UUID를 사용했고, 원본 파일명(originFileName)은 UserMetadata로 저장 하기 위해 코드를 추가했는데 원본 파일명(originFileName)이 한글인 경우 S3에서 오류가 발생했다. public String uploadImage(MultipartFile file) throws Exception{ String originFileName = file.getOriginalFilename(); String filePath = uploadPath + UUID.randomUUID.. 2023. 8. 20.
Gradle build jar 시 plain(xxxx-plain.jar) 제거하기 gradle로 jar 빌드 시 bootJar(excutable jar)로 빌드하는 경우가 대부분이지만 공통모듈을 분리한다거나 라이브러리를 직접 개발해서 배포를 해야하는 경우가 있다. 이때 jar로 빌드를 하게 되면 jar 파일명에 plain이라는 Classifier가 붙게 된다. jar{ enabled=true } 이렇게 되면 다른 프로젝트 등에서 Nexus 등을 통해 의존성을 걸어서 사용할 때 안되는 경우가 발생한다. jar파일에서 plain을 제거하는 방법은 다음과 같다. jar{ enabled=true archiveClassifier = '' // Classifier 제거 } 빌드를 하게되면 이제 plain이 없어졌다. 2023. 7. 22.
springdoc swagger ui disable Petstore(swagger-ui enabled false not working) Springdoc SwaggerUI를 사용하면서 한가지 이상점을 발견했다. SwaggerUI 설정을 QA, PRD 환경 등에서 disalbe 처리를 하기 위해서 아래와 같이 application.yml파일에 간단히 disable 설정을하고 테스트를 해봤다. springdoc: swagger-ui: enabled: false Application의 API는 diable처리가 됐는데 Swagger의 기본 샘플인 Petstore API가 나타나기 시작한것이다. 사실 Application의 API Doc을 제한하겠다는 목적은 달성했다하지만 그렇다고 기본 샘플이 뜨는것은 이해가 안되는 상황이고 찜찜하다. yml 설정에서 'disable-swagger-default-url: true' 등 기타 다른 설정들을 모두 .. 2023. 6. 19.
SpringBoot3(SpringBatch5) 동일(or 이전) 파라미터 재사용 해결 SpringBatch에서 파라미터 처리에 대한 부분이 지속적으로 문제가 있는것 같다. 최근에 SpringBoot3에 SpringBatch5를 적용하면서 파라미터가 있으면 파라미터 값을 적용하고 파라미터가 없는 경우 소스 내부의 디폴트 값을 적용하는 로직을 처리하는 중에 문제를 발견하고 해결한 방법을 정리해본다. 먼저 동일한 파라미터라도 배치가 실행되도록 job에 RunIdIncrementer()를 적용한 상황이었다. public Job job() { return jobBuilderFactory.get("myJob") .incrementer(new RunIdIncrementer()) .start(step(null)) .build(); } 그리고 파라미터를 변경하면서 테스트를 했을 때 잘 동작하는 것을 확인.. 2023. 6. 5.
SpringBoot AWS S3 파일 업로드 SpringBoot 백엔드에서 AWS S3로 파일 업로드 하는 방법을 알아본다. 1. AWS 설정(S3버킷 생성 및 IAM 설정) 테스트용 S3 버킷을 간단히 생성한다. IAM에서 S3 접근을 위한 계정 및 AccessKey 설정을 한다. 먼저 계정의 권한은 AmazonS3FullAccess를 부여한다. 다음으로 S3업로드 시 사용할 AccessKey를 생성한다. 2. SpringBoot 어플리케이션 설정 'spring-cloud-starter-aws' gradle 의존성을 추가한다. implementation org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE application.yml에서 S3관련 설정 정보를 추가한다. cloud: a.. 2023. 6. 4.
반응형