springboot 7

[자동매매, SpringBoot] 3. 매도, 매수

2024.05.11 - [프로젝트/SpringBoot 업비트 자동매매 프로젝트] - [자동매매, SpringBoot] 2. 계좌 조회 이전 글에서 계좌 조회 기능을 만들었고, 매도 매수 기능을 추가 할 것이다. 업비트 개발자센터에서 API Reference를 보면  https://api.upbit.com/v1/orders 로 POST 요청을 보내 매도, 매수요청을 할 수 있고 Request Parameter 중 side 파라미터로 매수/매도 를 구분 한다. 나는 직관적으로 매수 / 매도 함수를 나눠서 만들것이다. 1. Util Class매수 / 매도 요청을 보낼 때 필요한 Jwt Token에는 클레임에 query_hash, query_hash_alg 를 포함해야 한다. 기존에 만든 Util Class에 ..

[자동매매, SpringBoot] 2. 계좌 조회

2024.05.11 - [프로젝트/SpringBoot 업비트 자동매매 프로젝트] - [자동매매, SpringBoot] 1. 프로젝트 생성 및 계획 이전 글에서 프로젝트 생성 및 계획을 마쳤고, 계좌 조회 기능을 추가할 것 이다. 업비트 개발자센터에서 API Reference를 보면 https://api.upbit.com/v1/accounts 로 GET 요청을 보내면 내가 보유한 자산 리스트를 Response 받을 수 있다고 한다. 화폐, 수량, 묶여있는 수량, 매수평균가, 매수평균가 수정 여부, 평단가 기준 화폐 정보를 받을 수 있는데 화폐, 수량 정보만 있으면 될 것 같다.  1. Util ClassAPI 요청을 보내려면 Header로 Authorization token을 보내야 하는데 업비트에서 지급..

[자동매매, SpringBoot] 1. 프로젝트 생성 및 계획

이전에 업비트 자동매매 프로그램을 Python으로 개발 후 GCP 환경에서 돌렸었는데 웹에서 매매 상황을 직관적으로 확인하기 위해 SpringBoot로 다시 개발하려고 한다. SpringBoot 3.2.5GradleJava 17IntellijDB 안씀Scheduling 함수로 자동매매가 계속 이루어지게 할 계획이다. 1. start.spring.io 에서 프로젝트를 생성 (Spring Web, Lombok 정도만 Dependency 추가해서 생성했다)  2. Config Class Upbit API를 사용하기 위해 발급받은 AccessKey와 SecretKey를 application.properties에 입력 하고 (key는 타인에게 절대 노출하지 마세요) AccessKey, SecretKey, Url ..

[JPA] 순환 참조, API 호출 시 순환 참조가 발생하는 이유

JPA의 순환 참조란 객체 간의 상호 참조가 무한 반복되는 경우를 말한다. 객체 그래프에서 한 객체가 다른 객체를 참조하고, 그 다른 객체가 다시 처음 객체를 참조하는 상황이고 스택 오버 플로우가 발생할 수 있다. 사이드 프로젝트 진행 하던 도중 Service 단 개발을 끝내고 API를 만들다가 스택 오버 플로우가 발생 하였다. 순환 참조를 미쳐 신경쓰지 못하고 있었음.. 순환 참조를 잘 예방해야겠다고 다시 한 번 생각함 Service를 테스트 할 때 까지만 해도 발생하지 않았던 문제인데 REST API를 구현하면서 문제가 발생한 이유는 ResponseBody를 구현할 시 Object 형태의 값을 직렬화를 이용해 JSON 형태로 변환하는데 이 때 순환 참조가 발생하기 때문이다. public class O..

프로그래밍/JPA 2024.03.01

[Spring] devtools로 서버 재 시작 없이 resource(html, css, js) 반영하기, Automatic Restart

개발을 하다보면 html, css, js 을 자주 수정 할 일이 생기는데 devtools를 이용하면 서버를 재 시작하지 않고 변경내용을 반영 할 수 있다. devtools는 크게 5가지 기능을 제공하는데, 그 중 Automatic Restart를 이용하는 방법이다. Automatic Restart Property Defaults Live Reload Global Settings Remote Applications Automatic Restart (서버 재시작) classpath에 속해있는 파일이 수정되었는지 감지하고 자동으로 재시작을 해준다. 소스를 수정하고 재컴파일하면 서버가 실행중이어도 변경된 값이 반영 된다. 사용방법은 devtools 의존성 추가하면 끝이다. 의존성 추가 (gradle 기준) im..

[Spring] 패키지 구조 - 계층형/도메인형

Spring 패키지 구조는 계층형 / 도메인형 으로 나눌 수 있습니다. 계층형 구조 계층형으로 디렉터리를 구성합니다. - controller, service, repository, domain, exception, dao ... 등 장점 구조 파악이 빠르다 단점 디렉토리에 클래스들이 너무 많이 모인다. 도메인형 구조 도메인 기준으로 디렉터리를 구성합니다. - order, member, item ... 등 장점 관련 코드들이 응집해 있다. 단점 구조 파악이 어렵다.

[Spring] 빈 생명주기(Bean LifeCycle) 콜백 개념 및 방식

애플리케이션 시작시점 및 종료시점에 작업이 필요한 경우가 있습니다. ex) 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결 ex) 종료 시점에 연결 종료 스프링을 통해 초기화 작업 및 종료작업을 어떻게 진행하는지 알아보겠습니다. 스프링 빈의 생명주기 스프링 빈은 다음과 같은 생명주기를 가집니다. 객체생성 -> 의존관계 주입 스프링 빈은 객체를 생성하고 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료 되는데 개발자가 의존관계 주입이 끝난 시점을 어떻게 알 수 있을까요? 스프링 빈의 이벤트 라이프 사이클 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 스프링은 의존..