본문 바로가기
반응형

SpringBoot37

MyBatis Invalid bound statement (not found) 오류 조치 SpringBoot에서 MyBatis 설정 시 아래와 같은 에러가 발생하는 경우 확인 해야 할 항목 및 조치 방법에 대해서 정리해본다.org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 1. application 설정 파일 application.yml 또는 application.properties 파일에 설정된 mapper xml 파일 경로가 올바르게 되어 있는지 확인한다. 아래 예시 설정을 참조하자.mybatis.mapper-locations=classpath:/mappers/*.xml 2. Mapper인터페이스와 SQL ID아래와 같이 Mapper 인터페이스 메소드명과 SQL 파일의 ID가 동일한지 확인한다. .. 2024. 10. 18.
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.
Kafka 구성 및 SpringBoot 연동 SpringBoot에 kafka 연동을 적용해보면서 kafka에 대한 기본 개념과 springboot와 연동 방법을 알아본다 Kafka 개요 매우 높은 처리량과 낮은 지연시간(latency) 높은 확장성 고가용성: 클러스터 내 Replication 각 메세지들을 여러 개로 복제해서 카프카 클러스터 내 브로커들에 분산시키는 동작 ex. 토픽 생성시 --replication-factor 3 으로 지정하면 원본을 포함하여 총 3개의 replication 생성 Topic 자체를 복제하는 것이 아닌 Topic의 파티션을 복제를 하는 방식 내구성: acks 옵션, 메시지 디스크 저장 개발 편의성: Producer와 Consumer의 분리 다양한 기능과 3rd Party 를 통해 관리 편의성 kafka 구성 주키퍼(.. 2023. 3. 13.
SpringBoot3 - GraalVM Native Image Support ㅁ이번에 SpringBoot3 릴리즈 관련 내용을 보면서 Native Image Support, GraalVM, AOT 관련된 내용이 있어서 한번 찾아보고 간단히 테스트 해봤다. 간단히는 Java기반의 SpringBoot 어플리케이션 실행 시 Java에 대한 종속성 없이(빌드 결과물이 jar가 아님) 독립 실행 가능하도록 해주는 것으로 얘기할 수 있다. java도 go처럼 빌드하고 실행할 수 있다는 것을 처음 알게되었는데 몇 년전부터 spring-native라는 프로젝트로 진행이 되고 있었다가 이번에 정식 Support로 포함이 된 것이라 한다. GraalVM Native Image 컴파일된 Java 애플리케이션을 미리 처리(Ahead Of Time)하여 생성할 수 있는 독립 실행형 실행 파일입니다(JV.. 2023. 2. 1.
SpringBoot RabbitMQ 활용(Simple Queue, Pub/Sub) 비동기 통신에 오래전부터 많이 활용되는 RabbitMQ를 SpringBoot에서 활용하는 방법을 알아본다. 간단한 Simple Queue 방식, Pub/Sub 구현 방식 이렇게 2가지를 정리해보자. RabbitMQ RabbitMQ에 대해 간단히 정리하면 AMQP를 따르는 오픈소스 메세지 브로커이다. (AMQP: Advanced Message Queuing Protocol, Application과 Middleware Broker와의 메세지를 주고 받기 위한 프로토콜) RabbitMQ에서 주요한 개념은 아래와 같다. 1. Producer: 메시지 발행 주체 2. Consumer: 메시지 수신자 3. Queue: 메시지가 Consumer에 의해 소비되기 전까지 보관되는 장소 4. Exchange: Produc.. 2022. 12. 23.
SpringBoot Redis 활용 - Pub/Sub Redis는 DB,Cache 기능 외에 Pub/Sub기능을 제공한다. SpringBoot에서 Redis의 Pub/Sub을 어떻게 활용하는지 알아보고자 한다. Redis Pub/Sub의 특징을 간단히 다음과 같다 - 가볍고 빠르다 - 메시지 전송에 대한 보장을 못한다(Subscriber가 실시간으로 메시지를 받지 못하면 그 메시지는 버려진다) - 간단하고 가벼운 실시간 pub/sub 처리에 적합 SpringBoot에서 Redis Pub/Sub을 사용하기 위한 설정부터 알아보자 1. SpringBoot 설정 build.gradle에 redis 의존성을 추가한다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' applicati.. 2022. 12. 16.
반응형