이끌든지 따르든지 비키든지

Framework/Spring 16

[Spring] 혼자서 해보는 가상화폐 시세 알림 API - 확장

새로운 요구사항에 대응하는 기능 확장 시나리오 추가된 요구 사항 : 슬랙의 슬래시 커맨드 기능 통합 슬래시 커맨드 기능을 통해 애플리케이션의 기능에 접근할 수 있어야 한다. 1. 슬래시 커맨드 요청 처리를 위한 컨트롤러 구현 @RestController @RequiredArgsConstructor @RequestMapping("/slack") public class SlackController { private final SlackCommandDispatcher commandDispatcher; @PostMapping("/slash-command") public ResponseEntity handleSlashCommand( final @RequestParam("channel_id") String chan..

Framework/Spring 2024.01.17

[Spring] 혼자서 해보는 가상화폐 시세 알림 API - 구현

저번 포스트에서 이어집니다. 구현 ▶ 구현 순서 시세 정보 수집 기능 알림 조건 검사 기능 실시간 알림 발송 기능 이력 관리 기능 1. 시세 정보 수집 기능 1-1. Feign Client 구성 시세 정보 수집을 위해 가상화폐 거래소 API를 조사한 결과, 대부분의 거래소가 자산 조회와 주문 등의 거래 관련 서비스에만 인증 수단을 요구하며, 시세 조회는 별도의 인증 없이 가능함을 확인했습니다. 따라서, Configuration 클래스에 RequestInterceptor를 별도로 구성하지 않았습니다. 시세 조회 서비스의 종류가 많았지만, 우선 거래 가능한 마켓 목록 조회 / 분(Minute) 단위 캔들 시세 조회 두 가지를 활용해 보기로 하고, 이에 대한 요청 메서드를 작성했습니다. @FeignClient..

Framework/Spring 2024.01.14

[Spring] 혼자서 해보는 가상화폐 시세 알림 API - 설계

목표 - Spring Boot와 외부 API를 활용하여 가상화폐 시세 정보를 수집·처리하고, 알림을 제공하는 API 기술 스택 ▶ 선택한 이유 OpenFeign vs RestTemplate Spring Data JPA와 유사하게, 간결하고 선언적인 방식으로 HTTP 요청을 구성할 수 있는 인터페이스를 제공하므로, HTTP 클라이언트 구현에 신경 쓰지 않아도 되고, 외부 서비스를 로컬 메서드처럼 쉽게 호출할 수 있습니다. 여러 외부 서비스를 내 애플리케이션의 비즈니스 로직과 효과적으로 통합할 수 있고, 기능 확장에도 유연하게 대응할 수 있을 것이라 판단해 OpenFeign을 선택했습니다. [Spring] OpenFeign 알아보기 OpenFeign은 Spring Cloud 기반의 선언적 HTTP 클라이언트..

Framework/Spring 2024.01.11

[Spring] OpenFeign 알아보기

OpenFeign은 Spring Cloud 기반의 선언적 HTTP 클라이언트 도구로, 간편하게 외부 API를 호출 할 수 있는 도구이다. 어노테이션과 인터페이스 기반의 간소화된 코드 작성으로, 외부 API를 마치 로컬 메서드처럼 호출해서 사용할 수 있다. (Spring Data JPA에서 인터페이스를 통해 DB 처리 메서드를 작성하는 것과 유사하다.) OpenFeign의 장점 인터페이스와 어노테이션 기반이므로, 이전 방식(RestTemplate 등)에 비해 작성할 코드를 줄일 수 있음 Spring MVC Annotation(@GetMapping, @RequestBody…)를 활용해 구성 가능 Spring Cloud의 다른 기술들( Eureka, Ribbon, Hystrix 등 )과 통합이 용이 시작하기 ..

Framework/Spring 2024.01.09

[Spring] 스프링 프레임워크 핵심 원리

Spring Framework는 2003년에 처음 출시되었다. 처음에는 복잡한 엔터프라이즈 자바 개발을 단순화하기 위한 목적으로 개발되었으며, 특히 엔터프라이즈 자바 빈즈(EJB)의 복잡성과 무거운 구조를 대체할 수 있는 가벼운 대안으로 등장했다. 주요 특징 1. 관점 지향 프로그래밍(AOP, Aspect-Oriented Programming)- 관점을 기준으로 횡단 관심사를 분리해 모듈화 할 수 있다. 2. 제어 역전(IoC, Inversion of Control)- 객체 생성에 대한 제어를 프레임워크에 위임해, 스프링이 객체의 생명 주기를 관리한다. 3. 의존성 주입(DI, Dependency Injection)- 객체 간 의존성을 외부에서 주입해 직접적으로 의존성을 관리하지 않아도 된다.    관점..

Framework/Spring 2023.11.27

[Spring Boot] 기능 기반 패키지 구조(package-by-feature)

선행 지식 : MVC 패턴 (링크) Spring 프레임워크 기반의 앱을 만들 때, 주로 사용하는 패키지 구조가 몇 개 있는데, 계층 기반 패키지 구조(Package-by-Layer), 기능 기반 패키지 구조(Package-by-Feature) 두 가지이다. 기능 기반 패키지 구조란 기능 또는 모듈별로 관련된 클래스 및 패키지를 그룹화하여 구성하는 방식을 말하는데, 아래 예시처럼 account와 admin 기능에 따라 패키지(클래스)를 구성하는 방식이다. 앱의 요구사항이나 특성을 고려해 두 구조 중 하나를 선택하지만, 보통 Spring Boot에서는 테스트 & 리팩토링 용이성, MSA(마이크로 서비스 아키텍처)로 분리되게 쉬움 등의 이유로 기능 기반 패키지 구조를 권장한다고 한다. Controller Co..

Framework/Spring 2023.10.22