2025/0813 Spring Cloud Gateway + API 서버 연동 예제 🚀 (테스트 영상 & 소스코드 포함) Spring Boot에서 Spring Cloud Gateway를 활용해 API 서버와 연동하는 간단한 예제입니다.이번에도 small make 방식으로 구현했습니다.이 예제에서는 Gateway 서버가 클라이언트의 요청을 받아 특정 경로에 따라 API 서버로 라우팅하는 방법을 다룹니다. 🚀동영상 🎬소스 💻gatewayapplication.ymlspring: cloud: gateway: routes: - id: user uri: http://localhost:8081 predicates: - Path=/user/** - id: product uri: http://localhost:8082 .. 💻 it/live-practice 2025. 8. 31. RoboPOJOGenerator로 외부 API JSON 쉽게 자바 객체로 변환하기 (테스트 영상 & 소스코드 포함) 이번 포스팅에서는 Spring Boot 환경에서 RoboPOJOGenerator 플러그인을 활용해, 외부 API의 JSON 응답을 Java 객체로 간편하게 매핑하는 방법을 소개합니다.이번에도 작게 만들며 키워가는 small make 방식으로 구현해보았습니다.이거 수동으로 만들려면 은근히 시간 걸립니다.편의상 직접 외부 API 호출하지 않고 JSON 문자열로 파싱 했습니다.동영상 🎬소스 💻build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.3.10' id 'io.spring.dependency-management' version '1.1.7'}group = 'com.test.lsy'version = '0.0... 💻 it/live-practice 2025. 8. 31. Spring Cloud 서킷 브레이커 간단 예제(테스트 영상 & 소스코드 포함) Spring Cloud에서 서킷 브레이커를 활용한 간단한 fallback 예제입니다.이번에도 small make 방식으로 구현했습니다.api1번에서 api2번을 호출 할 때 2번이 내려간 경우 클라이언트에게 500에러가 아닌 미리 정의된 fallback을 실행하도록 합니다.동영상 🎬 소스 💻api 1번build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.3.10' id 'io.spring.dependency-management' version '1.1.7'}group = 'com.test.lsy'version = '0.0.1-SNAPSHOT'java { toolchain { languageV.. 💻 it/live-practice 2025. 8. 31. [⏱️ 21분 만에 구축] 🚀 Spring Gateway + 🔄 Redis + 🐘 PostGreSQL 연동 (⚡간단한 캐시 처리) 조금 과장된 제목일 수 있지만..빠른 복붙으로 인해 사실이다.회사에서 학습차원에서 아래 아키텍처를 구축할 일이 있어 구축한 뒤 역시 기억하기 위해 동영상 촬영을 했고 그 과정을 기록한다.그림은 참 못그린다.학습해보니, MSA 구조에서는 API 서버의 앞단에 게이트웨이 서버를 두고,이 게이트웨이가 논블로킹 방식으로 클라이언트의 요청을 빠르게 받아적절한 API 서버로 라우팅하는 역할만 수행한다고 한다. 위 그림에서 클라이언트의 요청을 게이트웨이가 제일 먼저 받아,경로(Path)에 따라 API 1번, 2번 서버로 라우팅을 해준다. API 1번은 DB Server와 Redis를 연동해서 DB 조회와 간단한 캐시 작업을 수행한다.API 2번은 간단한 문자열만 반환하는 역할이다. 실제 업무에서는 별도의 서버로 구축.. 💻 it/live-practice 2025. 8. 31. [3분 완성] 인텔리제이 GitHub 연결 & 푸시 따라하기(테스트 영상) 처음 GitHub와 IntelliJ를 연동하려고 하면 헷갈릴 수 있다.이 영상에서는 리포지토리 생성부터 커밋/푸시까지 정말 간단하게 다룬다.동영상 🎬개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.틀린 점 있을 경우 댓글 부탁드립니다. Spring Boot + Redis로 세션 공유하기 (테스트 영상 & 소스 코드 포함)Redis를 활용한 애플리케이션 간 세션 공유 실험! (짧고 간단한 영상)레디스를 공부한지 얼마 안되어서 까먹기 싫어 기록으로 남긴다.동영상소스application.ymlserver: port: 9090 servlet: context-path: / encodinyaga.tistory.com Spring Boot + JWT로 인증 시스템 구현 (테스트 영상 & 소스 코드 .. 💻 it/live-practice 2025. 8. 31. IntelliJ에서 MyBatis XML 복붙 시 포맷 깨짐 해결 (Fix Formatting Issues When Pasting MyBatis XML in IntelliJ) 이 포스팅에서는 IntelliJ에서 MyBatis Mapper XML을 복사/붙여넣기할 때 포맷이 깨지는 문제를 해결하는 방법을 다룹니다. 그동안 귀찮아서 미뤘는데, 오늘 드디어 해결해서 기록해둡니다.동영상 🎬해결 방법 ✔️Settings > Editor > General > Smart Keys로 이동한 뒤,Reformat on paste 옵션을 None으로 변경 [IDE] IntelliJ 플러그인 수동 적용 (Manually Applying IntelliJ Plugin Settings in a New Environment)이 포스팅에서는 IntelliJ 플러그인 수동 적용하는 방법을 다룹니다.외부 네트워크가 되지 않는 폐쇄망에서 유용합니다.정말 간단합니다.기존 인텔리제이가 설치된 PC의 아래 경로의 .. 💻 it/live-practice 2025. 8. 31. [java] LinkedList(연결 리스트) 내 방식대로 이해 (feat. 자료구조) 카테고리를 고민하다가 스스로 아직 자료구조에 대해 잘 정리가 안된 상태라서 그냥 java로 분류했다.source code package collection.link;public class NodeMain1 { public static void main(String[] args) { //노드 생성하고 연결하기: A -> B -> C Node first = new Node("A"); //1번 째 노드의 참조값 first.next = new Node("B"); //1번 째 노드의 next필드에 2번 째 노드의 참조값 저장 first.next.next = new Node("C"); //2번 째 노드의 next필드에 3번 째 노드의 참조값.. 💻 it/development 2025. 8. 31. [java] 직접 구현하는 연결리스트 > 추가, 삭제 기능 (feat. 자료구조) 연결리스트의 추가, 삭제 원리는 정말 간단한데 그 추상적인 개념을 머릿속으로 그리는게 너무 오래 걸렸다.source codepackage collection.link;public class MyLinkedListV2 { private Node first; private int size = 0; //마지막 인덱스에 값을 추가 public void add(Object e) { Node newNode = new Node(e); if(first == null) { first = newNode; } else { getLastNode().next = newNode; } size++; } .. 💻 it/development 2025. 8. 31. [java] 직접 구현한 List 추상화 (feat. 의존관계 주입) 복잡한 로직을 수행하는 배치 프로그램이 있다고 가정한다.로직은 매개변수로 넘어온 인자만큼 루프를 돌면서 list의 앞부분에 데이터를 넣는 로직이다.(앞부분인게 중요)배치프로그램 코드를 점점 개발자들이 리팩토링 했다는 스토리다.Ver 1: ArrayList 사용의 성능 문제package collection.test;import collection.list.MyArrayList;public class BatchProcessorV1 { // MyArrayList에 직접 의존(bad) private final MyArrayList list = new MyArrayList(); //엄청 복잡한 로직이라고 가정 public void logic(int size) { long star.. 💻 it/development 2025. 8. 31. [Node.js] 무한 스크롤 적용 소스 (feat. mobile) 개발환경백엔드프론트엔드Express.js(Node.js 기반 웹 프레임워크)EJS 템플릿 엔진(Embedded JavaScript)라우트router.get('/searchHistoryScroll', MyController.getHistoryIndexUsePaging);라우트 파일에서 /searchHistoryScroll url을 MyController의 getHistoryIndexUsePaging 함수와 매핑컨트롤러// 상단 정의 부분 const axios = require('axios');// 라우트에 정의된 함수exports.getHistoryIndexUsePaging = async(req, res) => { let pageNo = req.query.page[0]; // 조회할.. 💻 it/development 2025. 8. 31. [jQuery] 체크 이벤트 강제 발생 시키기 화면에 체크박스가 2개 있고, 체크박스의 change 이벤트를 감지하여 두 체크박스가 모두 체크되었을 때만 버튼을 활성화시키는 기능이 있다.그런데, 사용자가 직접 체크박스를 체크했을 때는 이벤트가 잘 감지되었지만, 함수 호출로 동적으로 체크박스를 체크한 경우는 감지되지 않는 문제가 있었다.이유는 기본적으로 체크박스를 동적으로 조작하면 이벤트가 발생하지 않기 때문에 그렇다.그래서 trigger.('이벤트명')으로 이벤트를 강제로 발생시켜 해결 했다.수정 전function check(checkId, target) { document.getElementById(target).classList.add('d-none'); $("#" + checkId).prop('checked', true); .. 💻 it/development 2025. 8. 31. [IDE] IntelliJ 플러그인 수동 적용 (Manually Applying IntelliJ Plugin Settings in a New Environment) 이 포스팅에서는 IntelliJ 플러그인 수동 적용하는 방법을 다룹니다.외부 네트워크가 되지 않는 폐쇄망에서 유용합니다.정말 간단합니다.기존 인텔리제이가 설치된 PC의 아래 경로의 plugins폴더를 신규 PC의 동일한 경로에 복붙하면 됩니다.AppData는 숨김폴더 해제해야 보입니다.그 후 인텔리제이 재부팅 하면 플러그인들이 적용됩니다. 📌 이 글은 개인 학습 목적으로 작성한 기록이며, 내용에 오류가 있을 수 있습니다. 잘못된 부분이 있다면 댓글로 알려주세요! 💻 it/development 2025. 8. 31. 이전 1 2 다음