Dandy Now!
  • [ 언어·프레임워크/Spring Boot ]
    [Spring Boot] 마이바티스(MyBatis) Parameter Not Found 에러 완벽 분석 및 해결: @Param 어노테이션 사용법
    2025-04-07 17:54:48
    마이바티스(MyBatis) Parameter Not Found 에러 완벽 분석 및 해결: @Param 어노테이션 사용법MyBatis는 강력하고 유연한 SQL 매퍼 프레임워크이지만, 개발 중 종종 org.apache.ibatis.binding.BindingException: Parameter '...' not found 와 같은 에러 메시지를 마주하게 된다. 특히 매퍼(Mapper) 인터페이스의 메소드에 두 개 이상의 파라미터를 전달할 때 자주 발생하는 이 문제의 원인을 명확히 파악하고, @Param 어노테이션을 이용한 깔끔한 해결 방법을 예제 코드와 함께 알아본다.1. 문제 상황 재현 (Error Scenario)사용자 상태(status)와 이름(name)을 조건으로 사용자를 조회하는 간단한 기능을 개발..
  • [ 언어·프레임워크/Spring Boot ]
    [Spring Boot] application.properties 환경별 설정
    2024-11-04 13:24:14
    1. application.properties 환경별 설정개발 환경, 로컬 환경, 프로덕트 환경에 따라서 application.properties 설정을 각각 달리하여 관리할 수 있다.아래 코드는 dev, local, prod로 설정을 관리하는 예이다. resources 폴더 내에 resources-dev, resources-local, resources-prod 폴더를 각각 생성하여 관리하는 방식이다.# resources/resources-dev/application.propertiesspring.profiles.active=dev # 이 속성 값을 추가하여 관리한다!# application-dev.propertiesdb.url=jdbc:mysql://dev-db-urldb.username=dev-u..
  • 게시글 대표 이미지 썸네일 주소
    [ 언어·프레임워크/Spring Boot ]
    [Spring Boot][TROUBLESHOOTING] 6초 이상의 첫 로딩 시간 문제 해결
    2024-05-20 17:08:36
    1. 6초 이상의 첫 로딩 시간문제백엔드는 Spring Boot, 프런트엔드는 React.js로 작성된 서비스이다. 이 서비스에 접근하면 6초 이상의-극악의-로딩 시간이 필요했다. 2. 원인크롬 개발자 도구에서 확인해 보니 전체 로딩 시간 중 5초 이상을 백엔드 API 호출이 차지하고 있었다. 백엔드 코드(서비스 클래스)를 확인해 보니 API 호출 시 GET과 UPDATE 요청이 각각 순차적으로 이루어지며, UPDATE 요청이 완료되면 GET 요청 결과를 응답하도록 작성되어 있었다. UPDATE 요청도 여러 번 시도되고 있었기 때문에 이 부분에서 병목 현상이 발생하고 있다고 보았다.  3. 비동기 처리하여 1초 미만으로 개선UPDATE 요청을 비동기 처리하여 GET 요청이- UPDATE 요청이 완료될 때..
  • [ 언어·프레임워크/Spring Boot ]
    [Spring Boot] LocalDateTime과 DB의 시간 데이터 불일치, 쿼리 오작동 문제(DateTimeFormatter으로 해결)
    2024-05-09 11:13:17
    1. 날짜 조건 검색 시 불일치 문제Spring Boot에서 MyBatis를 이용해 DB 데이터를 조회하였다. 조회 조건에서 시간을 기준으로 조회하는 경우 기준 시간 이후의 데이터가 와야 하는데 그 이전 시간 데이터도 함께 오는 현상이 발생했다. 2. DateTimeFormatter으로 해결서버의 날짜 데이터의 경우 "2024-05-09 08:17:25"와 같은 문자열 형식으로 저장되어 있다. LocalDateTime 타입의 시간으로 조회 시 제대로 된 조회가 되지 않았다. DateTimeFormatter를 이용해 "yyyy-MM-dd HH:mm:ss" 형식의 문자열로 변경하여 쿼리를 날리니 정상적으로 조회가 되었다.LocalDateTime now = LocalDateTime.now();LocalDate..
  • [ 언어·프레임워크/Spring Boot ]
    [Spring Boot] ubuntu에서 git clone 후 gradle build하기
    2024-05-09 09:58:52
    1. git clonegit clone https://postforty:@github.com/postforty/.git📢 application.properties 파일 빠트리지 않도록 주의! 2. gradle build./gradlew build위 명령어 실행 후 "-bash: ./gradlew: Permission denied" 에러가 발생한다면 아래 명령어로 gradlew에 권한을 부여한다.chmod +x ./gradlew기존 build 폴더를 지우고 다시 빌드하고자 한다면 아래와 같이 진행하면 된다../gradlew clean # build 폴더 삭제./gradlew clean build # build 폴더 삭제 후 빌드2025-02-06 추가우분투에서 아래의 예와 같이 nohup을 이용해 자바..
  • [ 언어·프레임워크/Spring Boot ]
    [Spring Boot] gradle lombok Slf4j로 테스트 코드 로그 찍기
    2024-04-10 15:52:53
    1. DEBUG CONSOLE에 Slf4j 로그가 찍히지 않는 문제 코딩하는 오후 채널의 "스프링 부트 : 보안"을 실습하던 중에 테스트 코드를 실행했는데 DEBUG CONSOLE에 로그가 찍히지 않는 문제가 있었다. 구글링을 통해 이 문제를 해결했고 해당 영상에 없는 내용이라 이 글을 작성하여 정리하고자 한다. 😉 코딩하는 오후 "스프링 부트 : 보안" 동영상 강의 : https://youtu.be/3CY2pk-Ug10?feature=shared 2. lombok 테스트 코드용 설정 2.1. 의존성 설정 build.gradle 파일의 의존성(dependencies)에 아래 코드를 추가해야 한다. testCompileOnly 'org.projectlombok:lombok' testAnnotationPro..
  • [ 언어·프레임워크/Spring Boot ]
    [Spring Boot] MySQL 연동 application.yml 설정
    2024-04-08 12:44:28
    1. MySQL 연동 실패 MySQL 연동 시 application.yml 파일의 database-platform 속성을 MySQLDialect로 작성해야 한다. 이렇게 설정하지 않고 시도했을 때 아래와 같은 에러를 만났었다. org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialect.MySQL57Dialect] as strategy [org.hibernate.dialect.Dialect] 2. application.yml 설정 사례 Spring boot에서 MySQL 연동을 위해 application.yml을 다음과 같이 설정해 주었고 연동에 성공했다! # ..
  • 게시글 대표 이미지 썸네일 주소
    [ 카테고리 없음 ]
    [Spring Boot]점프 투 스프링부트 실습 중 h2 db에 insert가 되지 않는 현상
    2023-07-31 13:53:38
    점프 투 스프링부트 실습을 진행하고 있습니다. 실습 프로젝트를 깃허브를 통해 관리하고 있는데요, 데스크톱에서 작업하던 프로젝트를 노트북에서 계속 진행하려고 환경 설정을 새롭게 하고 있었습니다. 그런데 db에 insert가 되지 않는 문제로 인해 애를 먹었습니다. db에 insert 시도는 JUnit 테스트를 이용해서 진행하였습니다. 해당 실습 내용은 "점프 투 스프링부트"의 2-05 레포지터리(https://wikidocs.net/160890)입니다. 문제의 원인은 @Transactional 때문이었습니다. 해당 어노테이션을 주석 처리하니 데이터가 정상적으로 insert가 잘되었습니다. JUnit 테스트가 성공인데 데이터는 들어가지 않고 아주 애를 먹었었는데 이 어노테이션이 롤백을 시킨 것이 아닐까 추축..