선언적 트랜잭션 선언적 트랜잭션 이라함은 annotation을 이용한 트랜잭션으로, @Transactional을 사용한 트랜잭션을 의미합니다. @Transaction은 Sprign AOP를 통해 구현되어지는 방식으로 아래 어노테이션 선언을 하게되면 그림과같은 내부 로직이 구현됩니다. 특징 트랜잭션 로직과 비즈니스 로직을 분리하여 관리할수 있습니다. 유지보수가...
Spring을 사용하면서 많은분들이 헷갈려 하고 혼용되어 사용되기도 하는 용어인 VO, DTO, Entity에대해서 정리하고 이 Object들을 사용하는것과 Map을 사용하는것에대한 논쟁에대해서 알아보도록 하겠습니다. DTO(Data Transfer Object) 약자 그대로 해석을 하면 데이터를 개체로 변환한 것으로,데이터 교환을 위해 선언한...
XA 2PC(2 phase commit) 분산 트랜잭션 처리를 위한 X-OPEN 표준이며 하나 이상의 데이터베이스간에 2PC 트랜잭션이 보자오디어야할때 XA Datasource가 사용됩니다. 글로벌 트랜잭션(분산 트랜잭션)을 적용하기위해서는 반드시 2PC를 해야하고 JTA를 사용할때 XA가 사용됩니다. JTA JTA (Java Transaction API)는...
datasource와 transaction 트랜잭션은 일반적으로 단일 datasource단위로 관리됩니다. 그렇다면 다중 datasource 환경에서는 transaction을 어떻게 구축할수 있는지 알아보도로고 하겠습니다. Transaction propagation 설정을 통한 환경 Datasource 마다 TransactionManager가 설정되어, 양측의 데이터소스 트랜잭션을 확실하게 체크 할 수 없습니다. Propagation을통해...
Git-flow Git flow란 이름에서 알수 있다시피, Git의 흐름을 관리하는 방법론입니다. 그렇다면 git의 흐름을 관리하게되면 어떤 좋은점이 있는지 알아보도록 하겠습니다. Git-flow 히스토리 다이어그램 깃 플로우를 적용하기위해서는 두가지의 필수 사항만 지켜주시면 쉽게 따라하실수 있습니다. 모든 작업내용은 하나의...
Devtools 개요 기능 1. 템플릿(thymeleaf, freemaker … )에 대한 cache property default들을 자동 비활성화 처리 기능 2. Trigger 파일들에 대한 update 발생시 자동 시작 기능 3. 소스 변화시 application 이 브라우저 liveReload 발생 이슈 IntelliJ에서...
개요 이번 포스팅에서는 자바에서는 파일을 어떻게 동작을 시키는지를 알아보도록 하겠습니다. 실행 과정 1. Compile 보통 JAVA로 코딩을 하게되면, .java 파일형식으로 작성을 하게되는데 해당 파일은 컴퓨터에서 바로 실행가능한 파일이 아닙니다. 실행간으하게 만들기위해 컴파일 과정을 거치게 되는데,...
ExceptionHandler 스프링에서는 예외처리를 위한 어노테이션인 Exception Handler를 제공해주고 있습니다. 간단한 예제로써 알아보도록 하겠습니다. // SampleController.java @RestController @RequestMapping("/") public class SampleController.java { private static Logger logger = LogManager.getLogger(SentenceModularController.class); private SentenceModularService sentenceModularService; @Autowired public SentenceModularController(SentenceModularServiceImpl sentenceModularService) {...
Filter 필터는 HTTP 통신에서 Client의 Rquest와 Response를 목적에따라 변형시킬수 있는 역할을 합니다. 일반적으로 java.servlet.Filter에 선언되어있는 Filter를 상속받아 구현할수 있으며, ‘필터체인’이라는 주체에의해 필터들은 순차적으로 실행되게 됩니다. public class SomeFilter implements Filter { @Override public void init()...
2.16 Spring MSA (7) - 트랜잭션 일체형 아키텍쳐 에서는 왠만한 모든 처리들을 데이터베이스 트랜잭션에 의존하여 롤백처리를 지원해줄수 있습니다. 하지만 MSA와같은 분산환경에서는 서비스마다 다른 데이터베이스를 쓰는것이 일반적이라 일괄된 롤백처리가 어렵습니다. 이번챕터에서는 MSA 환경에서 트랜잭션처리를 하는 방법에대해서...
2.15 Spring MSA (6) - 리액티브(WebFlux) Spring 팀에서는 Spring framework5 부터 기존의 Spring MVC와는 별도로 리액티브를 위한 Spring WebFlux를 지원하고 있습니다. 이전챕터에서는 RabbitMQ를 통한 MSA에서의 리액티브 서비스를 구현해보았는데, 이번에는 Webflux를 통한 리액티브 서비스를 구현해보도록 하겠습니다....
2.14 Spring MSA (5) - 리액티브(RabbitMQ) 처음 MSA 포스팅에서 일체형 서비스와 비교해 서비스간의 통신으로 인한 오버헤드가 단점으로 지적된다고 말씀드렸습니다. 이 단점을 해결하기위한 스프링 MSA에서의 리액티브는 어떻게 사용되는지 알아보도록 하겠습니다. Contents List 2.14.1) 리액티브 프로그래밍 동기(Synchronous)...
본 프로젝트는 다음 링크를통해 확인하실수 있습니다. Homepage : http://www.stocknews.me Github : https://github.com/taes-k/stock_analysis Contents List 프로젝트 요약 사용된 스택 1.프로젝트 시작 2.프로젝트 기획 3. 개발 시작 4. 어쩌다보니 머신러닝? 5.프론트엔드 & 마무리 프로젝트 요약 뉴스 기사...
2.13 Spring MSA (4) - 인증서비스 MSA를 구성하면서보안을 위해 Oauth2를 일반적으로 사용하게 됩니다. 특히 스프링에서 제공하는 Spring cloud security를 사용하게되면 Token 링레이 방식으로 게이트웨이에서 얻은 인증토큰을 매칭된 서비스까지 넘겨서 최종 인증을 진행하는 과정을 거치게 됩니다....
구동환경 OS : Ubuntu 16.04 JAVA : JAVA8 TOMCAT : Tomcat8 Tomcat out of memory tomcat으로 서비스를 하다가 out of memory 오류가 나는경우가 있을것이다. 자주 발생하는 에러로는 Java.lang.OutOfMemoryError: Java heap Space Heap size error Java.lang.OutOfMemoryError:...