기록은 재산이다

To Improve Human Life


  • 홈

  • 태그

  • 카테고리

  • 아카이브

  • 검색

(Spring)다중 DataSource 처리

작성일: 2018-03-22 | 수정일: 2018-03-22 | In spring |

서론

Spring Application을 만들면서 여러 DataSource와 transaction이 존재하고 하나의 transaction 내에 commit과 rollback이 잘 동작하도록 하려면 어떻게 설정해야 할까? 실제로 구현을 해본 적은 없지만 세 가지 방법이 머릿속에 떠올랐다.

  • @Transactional의 propagation을 이용
  • spring-data-commons의 ChainedTransactionManager 이용
  • JtaTransactionManager 이용

이 방법들이 실제로 써먹을 수 있을지 확인해보려고 한다.

더보기 »

spring-data-rest 소개

작성일: 2018-03-20 | 수정일: 2018-03-20 | In spring , reference , data |

서론

Spring Data REST는 도메인 모델과 repository를 분석해서, RESTful API를 제공해준다.
본 문서에서는 Spring Data REST에 대한 간단한 예제와 함께 사용법에 관한 소개를 하고자 한다.

더보기 »

spring-boot에 관해서

작성일: 2018-03-15 | 수정일: 2018-03-15 | In chat |

spring-boot에 관해서

필자의 친구가 N게임사에 면접을 보러가서 spring-boot는 설정을 편리하게 해주는 것 외에는 없나요라는 질문을 받았다고 한다.

spring-boot는 설정을 편리하게 해주기 위한게 다라고 생각한다.
그 목적으로 나왔고, 그 목적을 달성함으로 파생되는 이익이 많다.

그 이익를 꼽자면

더보기 »

spring-boot-starter 작성하기

작성일: 2018-03-15 | 수정일: 2018-03-15 | In spring , practice , practice , boot |

개요

spring-boot에서 starter란 의존성과 설정을 자동화해주는 모듈을 뜻한다.

예를 들어, spring-boot-starter-jpa를 의존성 추가했을 때 아래의 일을 해준다.

  • spring-aop, spring-jdbc 등의 의존성을 걸어준다.
  • classpath를 뒤져서 어떤 Database를 사용하는지 파악하고, 자동으로 entityManager를 구성해준다.
  • 해당 모듈들 설정에 필요한 properties 설정을 제공한다(Configuration Processor를 사용하면 효과 UP)

프로젝트를 진행하면서, 공통적으로 사용되는 spring 설정을 모듈로 묶어놓고 사용할 수 있다.
또한 필요한 경우, 상위 프로젝트에서 얼마든지 설정을 덮어쓸 수 있다.

이번에는 직접 spring-boot-starter를 작성하고 동작하는 방법을 공유해보려 한다.
spring-boot 버전은 2.0.0.RELEASE를 사용한다.

더보기 »

Spring5에서 HTTP Streaming

작성일: 2018-03-15 | 수정일: 2018-03-15 | In spring , practice , practice |

서론

Spring의 Stream이라고 하면, 가장 먼저 떠오르는 것은 websocket일 것 같다.
websocket은 full-duplex communication(전 이중 통신)을 표방하고 있으며, 별도의 프로토콜을 공부해야하는 등, web상의 양방향 통신을 복잡하다고 느낄 수 있을 것 같다.

때문에 다음의 조건들을 충족시킬 Http Streaming 기법에 대해, spring-webmvc와 spring-webflux 별로 하나씩 공유하려한다.

  • Spring5에서 지원
  • 구현 난이도가 낮음
  • 기존의 Http 통신을 기반
더보기 »

가끔 복기할 만한 TCP Socket Programming 기초

작성일: 2018-03-15 | 수정일: 2018-03-15 | In etc. |

서론

Spring에서 지원하는 Streaming이나, WebSocket에 관련해서 공부하다가, 기본 지식을 다시 복습해야할 필요성을 느꼈다.
대학 강의 내용을 토대로 가끔씩 다시 떠올릴만한 내용들을 정리해두고자 한다.

Socket

Kernel 상에서 File Descriptor로 취급된다.
Local과 Remote의 Ip Address, Port 정보를 가지고 있다.
Data를 이 Socket을 대상으로 Read, Write한다.

더보기 »

Mustache 공유

작성일: 2018-03-14 | 수정일: 2018-03-14 |

서론

Java 서버를 개발하면서 View Template Engine에 대해서 매번 고민하게 된다.

spring boot를 써보면,

  • 더 이상 JSP를 쓰지 말아야 할 것처럼 말한다
    • boot에서 jsp를 쓸 경우 war로 만들어야 하며, WAS에 따라서 지원하지 않을 수 있다 - Tomcat만 고집한다면야…
  • Velocity는 boot에서 지원하지 않는다
    • 너무 오랫동안 업데이트가 없다면서 뺐는데, 2017-08-06에 Velocity Engine 2.0이 나왔다
  • Thymeleaf3는 여전히 느린 모양이다.
  • Freemarker가 그나마 가장 무난하다.

위와 같이 알고 있던 중에 최신 spring 문서를 뒤져보다가, script views라는 게 있다는 걸 알게 되었다.
Handlebars, Mustache, React, Kotlin Script templating 등등의 많은 라이브러리가 있었는데, 그중에서 Mustache를 살펴보려 한다.

더보기 »

Spring에서 요청에 따른 부가 응답 추가하기(3) - webflux 적용

작성일: 2018-03-11 | 수정일: 2018-03-11 | In spring , practice , practice |

서론

앞서 개발한 소스는 spring-webmvc로 작성했었다. 이번에는 Reactive Programming을 본격적으로 사용하며, non-blocking 동작을 지원하는 spring-webflux를 사용해서 이전까지의 소스를 포팅해보려고 한다.

더보기 »

Spring Property 관리

작성일: 2018-03-11 | 수정일: 2018-03-11 | In spring , reference |

Spring boot enviroment abstraction

1
2
3
4
5
6
@Component
public class MyBean {

@Value("${name}")
private String name;
}

classpath 내의 application.properties(yml)을 사용하여 어플리케이션에서 사용할 프로퍼티를 정의할 수 있다.

더보기 »

Spring에서 요청에 따른 부가 응답 추가하기(2) - reactor 적용

작성일: 2018-03-11 | 수정일: 2018-03-11 | In spring , practice , practice |

서론

앞 번에 개발한 소스에는 두 가지 문제점이 있었다

  1. Network I/O를 순차 실행
    • O(n) 시간이 걸림 : timeout * attachment 갯수
    • Async로 O(1)만에 끝내도록 튜닝 필요
  2. Failover
    • attachment는 단순 부가 정보임에도 불구하고 attachmentService에서 exception이 발생하면, 아무 정보도 내려줄 수 없음
    • attach는 실패해도 Board 정보와 나머지 성공한 attachment는 보여줘야 함

이번에는 위 이슈들을 reactor를 사용해서 해결해보려 한다.

더보기 »
<1234>
supawer0728

supawer0728

34 포스트
17 카테고리
51 태그
RSS
GitHub
© 2018 — 2020 supawer0728
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4
To Improve Human Life