Spring Boot 스케줄러 잡 중복 실행 방지 구현기환경Spring Boot 3.2.1JPA/HibernateMySQL문제 상황운영 환경에서 여러 서버 인스턴스가 동시에 실행될 때, 스케줄러 잡이 중복으로 실행되는 문제가 발생했습니다. 이는 데이터 일관성 문제와 리소스 낭비를 야기할 수 있습니다.해결 방안: 데이터베이스 기반 잡 락 시스템1. 잡 상태 관리 엔티티@Entity@Getter@NoArgsConstructor@AllArgsConstructor@Builderpublic class ScheduleJobStatus { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Lon..
🌱 Spring AI vs 🔗 LangChain4j: Java AI 프레임워크 전격 비교최근 AI 기술, 특히 LLM(대규모 언어 모델)을 자신의 애플리케이션에 통합하려는 개발자들이 늘어나면서 Java 진영에서도 두각을 나타내는 두 개의 프레임워크가 있습니다. 바로 Spring AI와 LangChain4j입니다.두 프레임워크 모두 강력하지만, 지향하는 철학과 사용 방식에 차이가 있어 프로젝트의 성격에 맞는 기술을 선택하는 것이 중요합니다. 이 글에서는 두 프레임워크를 심층적으로 비교하고, 어떤 상황에서 무엇을 선택해야 할지 명확한 가이드를 제시합니다.1. 정의: 두 거인의 등장🌱 Spring AISpring AI는 Spring 개발팀이 직접 만드는, 스프링 생태계에 AI 기능을 '네이티브'하게 통합..
안녕하세요! 오늘은 Spring MVC 컨트롤러를 테스트할 때 자주 사용되는 두 도구, MockMvc와 MockMvcTester를 비교해보겠습니다. Spring Framework는 웹 애플리케이션 테스트를 위해 다양한 도구를 제공하는데, 이 중 MockMvc는 오랜 기간 표준으로 자리 잡았고, 최근 Spring 6.2부터 소개된 MockMvcTester는 더 현대적이고 fluent한 API를 제공합니다. 이 포스팅에서는 먼저 각 개념을 설명한 후, 비교를 통해 차이점을 분석하고, 마지막으로 실제 예시 코드를 통해 어떻게 사용하는지 보여드리겠습니다.이 비교는 Spring Boot를 기반으로 한 테스트 환경을 가정하며, 실제 프로젝트에서 컨트롤러 테스트를 효율적으로 적용하는 데 도움이 될 것입니다. 그럼 시..
상황 spring rest doc이 적용된 spring boot 2.6. gradle 7버젼에서 aws codebuild 빌드단계 및 로컬빌드 중 아래와 같은 플러그인의 의존성을 가져오지 못하는 문제 발생 build.gradle 코드는 수정하지 않았음 id "org.asciidoctor.jvm.convert" version "3.3.2" // Spring REST Docs 에러 메시지 Welcome to Gradle 7.4.1! 90 91 Here are the highlights of this ***: 92 - Aggregated test and JaCoCo reports 93 - Marking additional test source directories as tests in IntelliJ 94 -..
gradle에서 asciidoctorExtensions 플러그인 설정시 기본 path는 src/docs/asciidoc로 되어있다 더보기 Methods sourceDir where the asciidoc sources are. Use either sourceDir path, setSourceDir path or sourceDir=path Type: File, but any object convertible with project.file can be passed. Default: src/docs/asciidoc. 출처: https://asciidoctor.github.io/asciidoctor-gradle-plugin/maintenance-1.5/
1. mysql 백업 스크립트 작성 # mkdir /backup 백업된 sql을 저장할 디렉터리를 만든다 # chmod 755 backup 755권한준다 # vi /root/backup.sh # vi /root/backup.sh 백업 스크립트를 작성한다 ---------- backup.sh ------------ #!/bin/sh DATE=`date +"%Y%m%d"` PREV_DATE=`date --date '5 days ago' +"%Y%m%d"` /usr/bin/mysqldump -u사용자id -p비번 DB명 > /backup/mysql_db_bak_${DATE}.sql chown root.root /backup/mysql_db_bak_${DATE}.sql chmod 755 /backup/mysql..
logrotate로 톰캣 로그 관리 정해진 시간마다 로그 파일을 백업시켜주는데, 로그 파일이 무작정 늘어나는 것을 방지하기 위해 로그 파일의 최대 개수를 정해놓으면 최대 개수를 초과했을 때 가장 오래된 로그 파일을 삭제하고 새로운 로그 파일을 생성하면서 rotating 해주는 툴이다. 원리 /etc/logrotate.d/* 밑에 파일을 두면 자동으로 셋팅된다. logrotate.conf 에서 /etc/logrotate.d/* 파일들을 include 하고 있기 때문 작성방법 vi /etc/logrotate.d/tomcat 내용 ${톰캣경로}/logs/catalina.out { copytruncate daily size 100M rotate 30 compress missingok notifempty date..
리눅스 서버시각 한국(서울)으로 바꾸기 현재 시간 정보 보기 [ec2-user@ip ~]$ date Fri Aug 8 06:41:49 UTC 2014 현재 기본으로 설정된 로컬 타임존 보기 [ec2-user@ip-172~]$ sudo cat /etc/localtime TZif2UTCTZif2UTC UTC0 현재 설정된 시스템 기본 타임존 삭제 [ec2-user@ip-172~]$ sudo rm /etc/localtime 서울/아시아(한국) 타임존을 시스템 기본으로 설정 [ec2-user@ip-172~]$ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime 현재 시간 정보 재 확인 [ec2-user@ip-172~]$ date Fri Aug 8 15:48:27..
- Total
- Today
- Yesterday
- pessimistic lock
- org.asciidoctor.jvm.convert
- asciidoctor sourceDir
- Could not find org.ysb33r.gradle:grolifant:0.16.1
- 리눅스 톰캣 logrotate
- 리눅스에서 mysql 백업
- RAG
- Spring MockMvc
- 리눅스 sql 백업덤프 만들기
- ContentCachingRequestWrapper caching # ContentCachingRequestWrapper file upload
- ContentCachingRequestWrapper caching error
- 리눅스 mysql cron
- Controller Testing
- Spring Boot
- LangChain4j
- sql import
- 리눅스 파일 인덱스로 삭제
- springai
- MockMvcTester
- 리눅스 톰캣 로그관리
- Job Lock
- 리눅스 mysql 백업
- 멀티 인스턴스
- 리눅스 파일 인덱스 확인
- spring test
- asciidoctorExtensions
- teefilter file upload error
- 톰캣 로그파일 자동삭제
- 톰캣 로그파일 자동 삭제
- mysql dump sql import
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |