https://fearless-hardboard-bd6.notion.site/Document-26266e6d385d4ee19e024644ec4cb0be 코인사조 Document 프로젝트 주제 fearless-hardboard-bd6.notion.site [AWS Architecture] MSA 인사이트를 얻을 목적으로 시작한 사이드프로젝트 후기를 작성합니다. 주제는 코인 자산 관리 시스템(~ 다양한 거래소의 코인을 모아서 보여주는 앱)을 간단하게 만들어보기로 했고 프론트 1명, 백엔드 3명이서 작업을 진행했으며, 백엔드 영역에서 커뮤니티 도메인과 자산 도메인의 일부를 담당했습니다. 첫 3주 동안은 EDA(Event Driven Architecture), DDD(Domain Driven Developmen..
MSA에 대한 학습을 진행하기 위해 MSA에 대한 개요와 리엑티브 프로그래밍을 학습했다. Async + Nonblocking, Publish, Subscribe, webflux 등 MVC가 아닌 생소한 백엔드 개발 영역 학습을 진행했다. 첫 주차, 과제 리엑티브 프로그래밍 실습을 진행하며, reactor의 각 종 연산자, publisher, subscribe, schedule로 쓰레드 관리를 이해하고 실습해보았다. 완벽히 이해하고 사용하는 실습은 아니어서, 아직 부족한게 많지만 조금씩 더 채워나가야 겠지.. :) /** * ["Blenders", "Old", "Johnnie"] 와 "[Pride", "Monk", "Walker”] 를 순서대로 하나의 스트림으로 처리되는 로직 검증 */ @Test pub..
1) dependency 등록 2) config 등록 3) controller에 api 작성 annotation 등록으로 가능하다. io.springfox springfox-boot-starter 3.0.0 먼저 pom.xml에 io.spring.fox를 dependency를 등록한다. @Configuration public class SwaggerConfig { @Bean public Docket api(){ return new Docket(DocumentationType.SWAGGER_2) .useDefaultResponseMessages(false) .apiInfo(getApiInfo()) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSel..
AppConifg.java (순수자바로 설정 클래스) public class AppConfig { //memberService는 AppConfig를 통해 불러낸다. //생성자 주입 : 생성자를 통해서 객체를 주입. public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } public MemberRepository memberRepository(){ return new MemoryMemberRepository(); } public OrderService orderService(){ return new OrderServiceImpl(memberRepository(), discountPolicy()); } ..
단방향 통신인 HTTP로 timeout이 걸려 해당 작업을 완료 할 수 없어, web socket을 활용하는 방법에 대해 찾아보고 테스트해 보았다. 웹소켓 객체가 생성되고 메시지를 주고 받는 것까지 확인하였다. pom.xml 수정 ( dependency 추가) 웹소켓 java 추가 ( serverEndpoint에 요청 url 추가 ) import javax.websocket.RemoteEndpoint.Basic; @Controller @ServerEndpoint(value="/echo.do") public class WebSocketChat { @Autowired private DiscountApiController discountApiController; private static final List ..
ildann.tistory.com/5 IntelliJ IDEA에 JUnit 추가하기 / 테스트 코드 작성 IntelliJ IDEA에서 JUnit을 추가하고 테스트 코드를 작성해보자. 아래 코드는 Java의 메서드 오버로딩 예제 코드이다. Main.java public class Main { public static void main(String arg []){ Multiplier multip.. ildann.tistory.com countryxide.tistory.com/17 [JUnit] @RunWith, @ContextConfiguration 그리고 @SpringApplicationConfiguration 스프링 JUnit 테스트를 할 때 테스트 클래스 상단에 @RunWith(SpringJUnit4C..
1. Async 켜기 자바) @configuration @EnableAsync xml) bean 등록 task:excutor 2. Async 어노테이션 달기 상세내용 springboot.tistory.com/38 스프링에서 @Async로 비동기처리하기 스프링에서 @Async로 비동기처리하기 @Async in Spring [원문: http://www.baeldung.com/spring-async] 1. 개요 Overview 이 글에서 스프링의 비동기 실행 지원asynchronous execution support과 @Async annotati.. springboot.tistory.com etc) Spring 비동기 응답 lts0606.tistory.com/7 Spring 비동기 응답(Spring async..
파일 업로드시 절대경로로 저장하고 싶을 때가 있고 상대경로로 저장하고 싶을 때가 있다. 개발 후 서버에 올릴 때 절대 경로가 바뀔 수 있음을 고려했을 때 상대경로로 구현을 하면 두 번 작업을 하지 않을 수 있다. 절대 경로 String path = "C:\\devfunpj"; 상대 경로( 웹서비스 디렉토리 하위 ) String path = request.getSession().getServletContext().getRealPath("/"); ( root 경로) path = rootPath + "createFile" 로 하면 create파일 하위까지 경로가 설정됨. fruitdev.tistory.com/169 [JSP] 서버 물리 경로 구하기 웹 서비스를 개발하다보면 현재 서비스가 돌아가고 있는 서버의 ..
https://atoz-develop.tistory.com/entry/Spring-%EB%B9%88%EC%9D%98-Scope-%EC%8B%B1%EA%B8%80%ED%86%A4%EA%B3%BC-%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85 [Spring] 빈의 Scope - 싱글톤과 프로토타입 [Spring] 빈의 Scope - 싱글톤과 프로토타입 빈을 등록할 때 아무런 설정을 하지 않으면 기본적으로 빈은 싱글톤 scope을 갖는다. 싱글톤 scope이란 어플리케이션 전반에 걸쳐 해당 빈의 인스턴스를 atoz-develop.tistory.com https://engkimbs.tistory.com/698 [Spring] 스프링 프록시 설정을 이용하여 프로토타입 빈 업데이..
RestAPI 속도 개선 https://ehdvudee.tistory.com/24 REST API 속도 개선(Java/Spring/Cache) 목차 상황 REST API 속도 개선 기술 스프링 캐시 용례1 - 1억건 통계 데이터 처리 API 캐싱 용례2 - KMS 캐싱 (EHCache를 통한 기능 추가) 상황 우연히 1억건의 DB 데이터를 처리하는 API 서버를 개발하게 되 ehdvudee.tistory.com Spring Rest Docs https://jaehun2841.github.io/2019/08/04/2019-08-04-spring-rest-docs/#asciidoctor-plugin-%EC%84%A4%EC%A0%95 Spring Rest Docs를 이용한 API 문서 만들기 | Carrey`..