일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링부트
- 자료구조공부
- JPA 공부
- 기술면접공부
- 알고리즘공부
- JPA스터디
- 기술공부
- JPA공부
- 스프링
- 코테준비
- 스프링부트공부
- K8S
- 스프링공부
- 코테공부
- Flutter
- nestjs스터디
- 스프링 공부
- 플러터 공부
- JPA예제
- 플러터 개발
- Axon framework
- 프로그래머스
- 자바공부
- querydsl
- Kafka
- DDD
- JPA
- nestjs
- nestjs공부
- 카프카
- Today
- Total
목록분류 전체보기 (715)
DevBoi
간단한데, 이것저것 삽질을 많이한것같다. 무튼 스프링에서 넘어가는 개발자들을 위해서 도움이 될까 한다. class-transform, class-validator, auto-mapper,Interceptor등을 살펴봤지만, 뭔가 간단하게 dto entity를 변환하는데 불필요한 기능? 좀, 의도와 다른 기능들이 보였다. 그래서 이건 나중에 적용하도록 하려고한다.(class-validator는 dto validation에 많은 도움을 줄것같다) 무튼, 시작 entity에 메소드를 추가했다(이건 jpa소스 작성 습관 같다) import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; import { CorpReqDto } from '../corp.re..
깃 레파지토리 항상 최상위에 존재한다. 해당 파일 내용을 변경해서 푸쉬하면 된다. 잘안되면 git rm -r --cached . git add . git commit -m "Apply .gitignore" 이 명령어로 초기화하고 커밋하면된다. 아래는 깃 파일 샘플 양식이다. 참고하자gi # : comments # no .a files *.a # but do track lib.a, even though you're ignoring .a files above !lib.a # only ignore the TODO file in the current directory, not subdir/TODO /TODO # ignore all files in the build/ directory build/ # ignore..
단순히 nestJS 관련 API를 개발했다. 스웨거를 붙였고, 해당 관련되서, 단순히 조회해서, 리턴하는 (DTO) 로직을 구현했다. typeorm 0.3버전 부터 좀 많이 바뀌어서, 버전은 0.2.45로 변경해서 작업을 했다. 1) 컨트롤러 import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards } from '@nestjs/common'; import { CorpService } from './corp.service'; import { JwtAuthGuard } from 'src/auth/auth-guard'; import { Corp } from './entities/corp.entity'; import { ApiTags, ApiO..
Axon framework 에서 command를 사용할때는 CommandBus, Event는 EventBus를 통해서 전달되었다 Query도 QueryBus를 통해서 해당 구현에 대한 Handler로 전달이 된다. 1. pointing query 해당 관련되서, 가장 간단한 구조이다. 각 핸들러를 미리 App에서 등록하고, 해당 요청이 오면 알맞은 Handler를 통해서 결과를 반환하는 것이다. 2. Routing 구조 멀티 모듈을 사용할때는 위와 같은 구조로 이루어 진다. 해당 관련되서, Axon Server에서 라우팅 테이블에 관련된 queryHandler를 등록해서, 사용자가 요청이 오면, 알맞은 앱으로 전달 및 결과를 요청 앱에 등록한다. 우선 해당 간단한 쿼리 클래스를 만들자 public cla..
MapStruct에 대한 적용을 다시 공부해보려고한다. 새로운 기능들도 조금 나온 것같고, 예전에 써서 기억도 안나서, 다시 공부할겸 정리를 한다. 1. Mapstruct 해당 기술은, Entity와 Dto간의 매핑을 지원하는 라이브러리다. getter,setter를 남발하여, 직접 구현하는 것보다. 라이브러리를 쓰는 것이 좋다. 유사하게는 MdoelMapper, 성능은 이게 더 빠르다. Mapstruct 생성 @Data @AllArgsConstructor public class MemberResponse { private String name; private String id; } @Data @AllArgsConstructor public class Member { private String name;..
Jmeter는 이미 충분히 좋은 시스템이다. 하지만, 로컬피씨에서 성능테스트를 할수는 없고, 로컬에서 Jmeter로 원격 서버를 쏴야 성능테스트가 정확하게 가능하다. 이에, 뭐가 없나? 하던 시점에 Wrk를 발견, 간단하게 도입 및 테스트 해보자 1) 설치 brew install wrk 2) 심플하게 사용 wrk -t20 -c200 -d60s http://localhost:8080/test3 -t20 : Thread 20개가 실행된다. -c200 HttpConnection 200개를 서버에 연결한다. -d60s : 60초 동안 진행 3) 실행결과 (base) yuseongjaeui-MacBookPro:~ ysj$ wrk -t20 -c200 -d60s http://localhost:8080/test3 Ru..
오늘은 Fegin에 대해서 잘 쓰는 법을 알아보자 우선 Fegin이 뭘까? Fegin -Netfilx에서 개발하나, Http client binder이다. -Fegin을 사용하면, 웹 서비스 클라이언트를 (외부 호출하는 앱을) 쉽게 작성할 수 있다. -인터페이스, 어노테이션만 하면 끝이다. 1) Gradle implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' 2) Main class 추가 @SpringBootApplication @EnableFeignClients public class SmithStudyApplication { public static void main(String[] args) { SpringApplica..
공식 문서를 참조해서, 정리했다. Event Bus, Event Store의 개념에 대해서 정리를 하고, 쿼리에 대한 개념을 정리해보자. 1) Event Store Event를 읽고 쓰는데 있어, EventStore가 기본적으로 갖출 조건이 있다. 1. 이벤트는 추가만 가능하다, 입력 삭제,수정이 불가능하다. 2. 여러 이벤트가 하나의 트랜잭션에서 처리가 되어야 한다면, 트랜잭션 단위로 커밋,롤백 되어야한다. 3. 커밋된 이벤트는 유실되어서는 안된다. 4. 발행된 모든 Event중 Aggregate별로 데이터를 읽을 수 있어야 한다. 5. 모든 이벤트는 삽입된 순서대로 읽기가 가능해야한다. 6. Snapshot 저장소 지원 이벤트 저장소에, Aggregate에 대한 ID와 시퀀스 번호가 있다. 그리고 해..
일단 Query를 사용해봤다. 다음에는 Event를 사용해보자 마지막에 분석 및 기타 기능에 대해서 구현 및 포스팅을 할 것같다. 이번에는 생성에 대한 컨트롤러 단, 부터 생성을 해보자. 단순히 한개의 OrderCount를 늘린다. CQRS는 커맨드와 조회를 나눠, 조회와 데이터 변경에 대한 관심사를 나눈다. 1) OrderController @RestController public class OrderController { @Autowired private CommandGateway commandGateway; @PostMapping("/order/{order-name}") public CompletableFuture incrementProduct( @PathVariable("order-name") S..
이제 어느정도 구현에 대한 감을 잡았다. 실제적으로 사용하기 위한 코드로, Service부터 따라가며 구현을 리팩토링 해보자 우선 서비스 부터 다시 만들어야 한다. 분석기반으로 소스를 하나씩 구현해보자, 단순히 메소드 하나만 우선 사용을 할 예정이다. 1) OrderQueryService @Service @RequiredArgsConstructor public class OrderQueryService { private final QueryGateway queryGateway; public CompletableFuture findAllOrders(){ return queryGateway.query(new FindAllOrderedProductsQuery(), ResponseTypes.multipleIns..