전체 글 26

ExecutorService와 BlockingQueue

ExecutorService와 BlockingQueue는 Java에서 동시성(Concurrency) 문제를 해결하고, 비동기 작업 처리를 효율적으로 하기 위해 자주 함께 사용되는 핵심 구성 요소입니다. 이 둘을 조합하면 멀티스레드 환경에서 작업을 안전하고 효율적으로 분산 처리할 수 있습니다. ✅ 1. ExecutorService란?ExecutorService는 Java의 스레드 풀(Thread Pool) 기반 작업 실행기입니다. Thread를 직접 생성하고 관리하는 대신, ExecutorService가 스레드를 재사용하면서 효율적으로 작업을 실행합니다.🔹 주요 특징작업 제출(Submit): Runnable 또는 Callable을 넘기면 백그라운드에서 비동기로 실행스레드 재사용: 매번 새 스레드를 만들지..

카테고리 없음 2025.07.09

웹소켓

1. 웹소켓이란?웹소켓(WebSocket)은 클라이언트와 서버가 지속적으로 연결을 유지하면서 양방향 통신(Full-Duplex)을 할 수 있도록 해주는 네트워크 프로토콜입니다.기존 HTTP 통신과는 달리 "요청-응답"이 아니라 "지속 연결"을 기반으로 동작해요. 2. 기존 HTTP와의 차이항목 HTTP WebSocket연결 방식요청-응답 후 끊김 (비연결 지향)연결을 맺고 계속 유지 (연결 지향)통신 방향단방향 (클라이언트 → 서버)양방향 (서버 ↔ 클라이언트)사용 목적문서 전송, API 통신실시간 데이터 통신 (채팅, 주식 시세 등)오버헤드매 요청마다 헤..

카테고리 없음 2025.06.20

RestTemplate란?

✅ RestTemplate란?**RestTemplate은 자바(Spring)**에서다른 서버의 API를 호출해서 데이터를 주고받을 수 있게 해주는 HTTP 클라이언트 도구입니다.🧠 쉽게 말하면?📞 "RestTemplate은 자바에서 HTTP 요청을 보내는 전화기다."📬 전화번호 = 요청할 URL🎙️ 내가 말할 내용 = 요청 헤더/본문📞 전화를 건다 = API 호출 (GET/POST 등)📩 상대방의 대답 = 응답 데이터(JSON 등)✅ RestTemplate이 필요한 이유예: 다른 서버에서 주식 가격 조회 API를 제공할 때자바 애플리케이션에서 한국투자증권 API에 요청하려면RestTemplate을 써서 요청을 보내고 응답을 받아야 함🔧 기본 사용 흐름🛠️ POST나 헤더가 필요한 경우✅ 자..

카테고리 없음 2025.05.30

최종 프로젝트 오픈API 연동(5)

✅ 한국투자증권 오픈API 연동 - 5단계: 응답 받은 JSON 데이터를 파싱하고 필요한 값 추출하기📌 1. 개요오픈API를 호출한 결과로 JSON 형식의 응답을 받게 됩니다.이 단계에서는 그 JSON 응답에서 **필요한 데이터(예: 일자별 시세, 거래량 등)**를 추출합니다.Spring에서는 일반적으로 **Jackson의 ObjectMapper**를 사용해 JSON을 파싱합니다.📎 2. 응답 JSON 예시한국투자증권의 일별 시세 조회 응답은 다음과 같은 구조입니다.✅ 우리가 필요한 데이터는 output2 배열 안에 있습니다.🧰 3. 사용 도구: Jackson의 ObjectMapperJsonNode는 Jackson이 제공하는 JSON 탐색 객체입니다.readTree()는 문자열(JSON)을 트리 구..

카테고리 없음 2025.05.30

최종 프로젝트 오픈API 연동(4)

✅ 한국투자증권 오픈API 연동 - 4단계: URL + 헤더를 사용하여 실제로 요청 보내기📌 1. 개요앞에서 준비한 URL과 헤더를 이용해서이제 실제로 오픈API 서버에 요청을 보냅니다.Spring에서는 RestTemplate이라는 클래스를 이용해 쉽게 HTTP 요청을 보낼 수 있습니다.⚙️ 2. 사용할 도구: RestTemplateSpring 프레임워크에서 HTTP 요청을 보내기 위한 기본 도구입니다.🧩 3. 요청 구성 요소 요약구성 요소설명URL2단계에서 만든 API 요청 주소Headers3단계에서 만든 인증 헤더MethodHttpMethod.GETBody(GET 요청이므로 없음)응답타입일반적으로 String.class 사용 ✍️ 4. 요청 코드 예시🔍 흐름 시각화⚠️ 5. 오류가 나는 경우 (..

카테고리 없음 2025.05.30

최종 프로젝트 오픈API 연동(3)

✅ 한국투자증권 오픈API 연동 - 3단계: 요청에 필요한 인증 헤더 구성📌 1. 개요오픈API 서버는 요청을 보낸 사람이 유효한 사용자이며 권한이 있는지 확인하기 위해HTTP 헤더에 인증 정보를 요구합니다.이 단계에서는 필요한 헤더들을 정리하고 자바 코드로 구성합니다.🔐 2. 필수 헤더 목록헤더 이름설명예시 값authorization인증 토큰 (Bearer 토큰 형식)Bearer eyJhbGciOiJIUzI1NiIs...appkey한국투자증권에서 발급한 App Key6a0c1f13-xxxx-xxxx-xxxx-abcdefappsecretApp Secret Key1f04c311-xxxx-xxxx-xxxx-abcd...tr_id사용하는 API 고유 식별자 (API 문서에 명시됨)FHKST03010100 ..

카테고리 없음 2025.05.30

최종 프로젝트 오픈API 연동(2)

✅ 한국투자증권 오픈API 연동 - 2단계: 요청 URL과 파라미터 구성📌 1. 개요오픈API에 요청을 보낼 때는 정확한 요청 URL과 쿼리 파라미터를 구성해야 합니다.한국투자증권의 REST API는 대부분 GET 방식이며, 쿼리스트링을 통해 종목코드, 날짜, 주기 등 다양한 값을 전달해야 합니다.📎 2. 사용할 API: 국내주식 일별 시세 조회API 설명: 지정한 종목의 일정 기간 동안의 주가(시가/종가/고가/저가/거래량)를 조회합니다.HTTP Method: GET요청 URL: https://openapi.koreainvestment.com:9443/uapi/domestic-stock/v1/quotations/inquire-daily-itemchartprice🧩 3. 주요 쿼리 파라미터파라미터명설..

카테고리 없음 2025.05.30

최종 프로젝트 오픈API 연동(1)

✅ 한국투자증권 오픈API 연동 - 1단계: 준비물📌 1. 개요한국투자증권에서 제공하는 OpenAPI를 사용하려면 **인증 키(appkey/appsecret)**와 **기본 서버 주소(base-url)**가 필요합니다.이 정보들은 보안상 코드에 직접 작성하지 않고, Spring의 설정파일(application.yml)을 통해 관리합니다.🛠️ 2. 필요한 정보설정 항목설명예시appkey한국투자증권 API에서 발급받은 App Key6a0c1f13-xxxx-xxxx-xxxx-abcdefappsecret위 App Key와 쌍을 이루는 Secret1f04c311-xxxx-xxxx-xxxx-abcd...base-url요청을 보낼 OpenAPI 서버 주소https://openapi.koreainvestment.c..

카테고리 없음 2025.05.30

아웃소싱 프로젝트 내가 맡았던 부분 기능 간략 설명(User CURD, JWT토큰,시큐리티 필터)

1. 프로젝트 개요 (중요도 및 어려움 표시 ★)회원 가입, 로그인, 회원 정보 조회/수정/삭제 기능을 제공.JWT 토큰을 활용해 인증 및 인가를 처리하고, Spring Security 필터를 커스텀하여 보안을 강화.상태 기반 세션이 아닌 Stateless(무상태) 방식으로 구현.메서드 단에서는 @PreAuthorize를 사용하여 사용자의 권한(Role)을 세밀하게 제어.2. JWT 인증/인가 흐름2-1. 로그인/회원가입/auth/signup : 회원가입 API (비밀번호 암호화 후 저장)/auth/login : 로그인 시 이메일+비밀번호 검증 후 Access Token 발급.2-2. 발급된 JWT 토큰 구조Payload : userId, userName, email, role 저장Header : Au..

카테고리 없음 2025.04.28

Spring 심화 3주차 정리(1) (Bean 생명주기, API 예외처리)

Bean 생명주기🔹 생명주기와 콜백이란?스프링은 객체(빈)를 생성하고 관리합니다 이 과정에서 초기화하거나 소멸할 때 자동으로 호출되는 메서드들을 지정할 수 있습니다 이게 바로 콜백(callback) 개념✅ InitializingBean, DisposableBean 인터페이스InitializingBean빈이 생성되고 의존성 주입까지 끝나면 호출됨초기 설정 코드 넣을 수 있음DisposableBean스프링 컨테이너가 종료되기 전에 호출됨정리 작업(예: 연결 닫기 등)에 사용 @Component public class MyBean implements InitializingBean, DisposableBean { @Override public void afterPropertiesSet() t..

카테고리 없음 2025.04.18