본문 바로가기 메뉴 바로가기

블로그으으

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

블로그으으

검색하기 폼
  • 분류 전체보기 (40) N
    • Kafka (2)
    • 웹개발 (10)
    • ㄴspring boot (4)
    • DB (3)
    • JAVA (3)
    • AWS (3)
    • 도커 (2)
    • Jenkins (2)
    • 알고리즘 (1)
    • 네트워크 (2)
    • elk (2)
    • 리눅스 (0)
    • 제우스 (1)
  • 방명록

전체 글 (40)
[cursor] 갑자기 spring boot 실행 안될 때(기본 클래스를 찾거나 로드할 수 없습니다. ClassNotFound)

종종 cursor 에서 스프링 부트가 돌지 않는 경우가 생기는데 그때마다 시간을 많이 쓰는 것 같아 기록으로 남겨둔다오류 상황들실행(f5)을 했을 때 아래와 같이 터미널에 오류 메세지가 뜨면서 실행이 안된다오류: 기본 클래스 src.main.java.com.xxx.XXX (를) 찾거나 로드할 수 없습니다.원인: java.lang.ClassNotFoundException: src.main.java.com.xxx.XXXSpring Boot Dashboard에 프로젝트가 안 뜸프로젝트를 열었는데 Spring Boot Dashboard에서 프로젝트가 보이지 않는다. Run and Debug 에서 실행(F5) 을 해보지만 아래 오류가 발생하며 안된다 ❗해결 방법 clean javactrl + + shift + ..

카테고리 없음 2025. 5. 21. 13:24
cursor 에 postgres MCP 연동하기(대화로 쿼리 날려보기!)

요즘은 Intellij 대신 Cursor를 사용해보는 중인데, 오늘은 여기에 PostgreSQL MCP를 붙여서 AI와 채팅으로 DB 쿼리를 날려보는 작업을 해봤다.💡 MCP(Model Context Protocol)란?MCP(Model Context Protocol)는 AI 모델이 외부 시스템(예: GitHub, Notion, SQL DB 등)과 쉽게 통신할 수 있도록 만들어진 오픈소스 표준 프로토콜이다. 쉽게 말하면, AI 모델과 외부 시스템 간의 연결 방식과 데이터 형식을 USB-C처럼 표준화한 규격이다.📹 이 영상을 한번 보자! 짧고 쉽게 설명해준다 → https://www.youtube.com/watch?v=-b0IEN4JAGE❓ Cursor란?VS Code 기반의 AI 개발 환경이다.Git..

카테고리 없음 2025. 5. 15. 10:43
같은 쿼리인데 결과가 다르게 나온다면? – MyBatis 1차 캐시

이번에 꽤 흥미로운 이슈를 하나 겪었다. 동일한 쿼리, 동일한 파라미터로 MyBatis 쿼리를 두 번 실행했는데, 첫 번째 쿼리의 결과와 두 번째 쿼리의 결과가 달랐다. (p6spy를 통해 확인했을 때 두 번째 쿼리는 로그조차 안 찍힘)결론부터 얘기하자면, MyBatis의 1차 캐시 때문에 발생한 문제였다.트랜잭션과 1차 캐시트랜잭션 내에서 1차 캐시가 동작한다는 점을 이해하는 것이 중요하다. MyBatis에서 1차 캐시는 SqlSession 단위로 관리되며, 하나의 트랜잭션 내에서 같은 SqlSession을 사용하기 때문에 트랜잭션 동안 캐시된 데이터는 계속 유지된다. 이 말은 트랜잭션 내에서 같은 쿼리와 파라미터로 데이터 조회 시, 쿼리가 실행되지 않고 1차 캐시에서 결과를 가져온다는 의미다.따라서 ..

ㄴspring boot 2025. 4. 13. 17:12
JPA @Transactional 과 1차 캐시

문제JPA에서는 1차 캐시를 사용하기 때문에 같은 엔티티에 대해서는 동일성(주소값이 같음)을 만족한다고 알고 사용해왔다. 그래서 나는 객체를 비교할 때 id가 아닌 객체 그 자체로 비교해 왔다. 그런데 어느 날 id로 가지고 온 객체를 이용해 fetch join을 통해 가지고 온 객체 중 하나를 찾는 로직을 작성했는데, 하나도 못 찾는 문제가 발생했다. 확인해보니 id를 통해 가지고 온 객체와 fetch join을 통해 가지고 온 객체의 주소값이 달랐다. 결론부터 말하자면 원인은 @Transactional을 붙이지 않아 발생했다. 테스트1. @Transactional 없이 조회아래 코드는 테스트를 위해 작성한 코드로, findByIdPerson은 personRepository에서 id를 이용해 perso..

웹개발 2025. 2. 2. 20:26
스레드 동기화와 volatile, synchronized 키워드

우리 팀에서는 사용자의 조작에 따라 카프카의 특정 토픽을 구독하거나 구독 취소하는 기능을 구현하고 있다. 이 과정에서 topicList라는 리스트를 통해 구독할 토픽을 관리하고, 해당 리스트의 사이즈를 체크하여 구독할 대상이 있는 경우에만 로직을 실행하도록 개발했다. 그런데 topicList에 데이터가 하나도 없을 때 무한루프에 빠져 새로운 토픽이 추가되어도 무한루프를 빠져나오지 못하는 현상이 발생했다.문제의 원인아래는 대략적인 코드이다. 코드를 살펴보면, topicList의 사이즈가 0일 때 while문 안에서 continue가 호출되어 무한루프에 빠지는 것을 알 수 있다. 사실 이 코드는 애초에 잘못 짜여진 코드이다. 토픽이 없는 경우에도 무한루프에 빠지가 코드를 짜면 안된다. 하지만 그렇다고 하더라..

JAVA 2024. 11. 11. 21:38
GitHub pull request 발생 시 Mattermost 에 메세지 전송하기(AWS lambda, api gateway)

전체적인 로직깃허브에서 pull request 를 만들면 api gateway로 요청을 보낸다 api gateway 는 lambda의 함수를 호출하고 lambda 의 함수 로직에서 mattermost를에 메세지를 전송한다api gateway : API 만들어주는 친구. 외부 클라이언트로부터 요청을 받아 람다 함수로 연결해줌lambda : 서버리스 컴퓨팅 플랫폼(메서드만 작성해서 실행시킬 수 있음)1. Mattermost에 webhook 추가하기먼저 mattermost에 외부 메세지를 받을 수 있도록 webhook을 추가해 준다좌상단 > 통합전체 Incoming WebhookIncoming Webhook 추가하기 내용 입력 생성된 URL → 람다에서 메세지 전송할 URL 로 사용2. aws lambda 함..

카테고리 없음 2024. 6. 20. 23:30
[Spring Boot] Multiple Datasource with Clickhouse

최근에 DL(Data Lake) 데이터 저장소를 Logpresso에서 ClickHouse(+Nifi)로 전환하는 작업을 진행했다. 이에 따라 API 서버(Spring Boot)에서도 Logpresso에서 가지고 오던 데이터를 ClickHouse에서 가져오도록 전환을 진행했다. 이를 위해 하나의 프로젝트에 다중 데이터소스(pg, ClickHouse)를 연결해야 했다. 이 글은 그 내용을 다룬다. 1. build.gradle 에 clickhouse jdbc 추가ClickHouse JDBC를 사용하기 위해 build.gradle에 의존성을 추가해준다. 2. yml 에 clickhouse 접속 정보 추가application.yml 파일에 ClickHouse 접속 정보를 추가해준다.datasource 위의 pos..

ㄴspring boot 2024. 6. 17. 00:03
nexus3 파일 보관 주기 설정

우리 팀에서는 브랜치에 push 될 때 마다 jar를 넥서스에 올려놓는 형식으로 사용중이다넥서스를 설치한 이후 보관주기를 설정한적이 없어 서버용량의 99% 를 사용중이었고 nexus 의 기능을 이용해 cleanup 설정을 걸어줬다 1. Cleanup Policies 설정정리 정책 설정Nexus Repository Manager에 로그인한다Administration > Repository > Cleanup Policies로 이동한다 기본적인 정보들을 적어준다 Cleanup Criteria 설정:Component Age: 게시일로부터 설정한 날짜가 지났을 경우Component Usage: 설정한 날짜 동안 다운로드되지 않았을 경우Asset Name Matcher: 삭제할 대상 이름의 정규식 설정 조건을 설정..

카테고리 없음 2024. 6. 16. 00:00
이전 1 2 3 4 5 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
  • lnk
  • lbr
TAG
  • spring boot
  • CURSOR
  • 네트워크
  • PostgreSQL
  • 오블완
  • 도커
  • API Gateway
  • php
  • 카프카
  • 스레드 동기화
  • 쓰레드 변수
  • 넥서스 파일 보관주기
  • jpa 1차 캐시
  • cursor ai
  • 1차캐시
  • db 두개
  • docker
  • cleanup policy
  • 다중 데이터소스
  • multiple datasource
  • 기본클래스를 찾거나 로드할 수 없습니다
  • s3
  • cleanup policies
  • 넥서스 보관주기
  • 보관주기
  • 캐시
  • volatile
  • myabatis
  • AWS
  • cursor mcp
more
«   2025/05   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바