Java/Spring(18)
-
Spring Integration
Spring Integration이란 Spring Integration은 스프링 기반 어플리케이션 내에 메시징 기반 서비스를 제공하고 선언적 어댑터를 사용해 외부 시스템과의 통합을 쉽게 해줍니다. 이런 어댑터들은 리모팅, 메시징, 스케줄링과 같이 스프링이 제공하는 기능들을 추상화하고 있습니다. Spring Integration의 컴포넌트 Message Spring Integration에서 메시지란 메타데이터와 함께 결합되어 있는 일련의 자바 오브젝트를 위한 포괄적인 Wrapper를 말합니다. 아래 메시지 인터페이스가 보여주듯이 메시지는 페이로드와 여러 개의 헤더로 구성됩니다. public interface org.springframework.integration.Message { MessageHeader..
2020.09.15 -
Spring WebFlux
Bloking I/O Block I/O는 어플리케이션에서 I/O 요청을 한 후, 완료되기 전까지는 Application이 Block 되어 다른 작업을 수행할 수 없습니다. 이는 해당 자원이 효율적으로 사용되지 못하고 있음을 의미합니다. 하지만 실제 어플리케이션들은 Blocking 방식임에도 불구하고 마치 Block이 안 되듯이 동작하는 것처럼 보입니다. 이것은 Single Thread 기반이 아닌 Multi Thread를 기반으로 동작하기 때문입니다. Block 되는 순간 다른 Thread가 동작함으로써 Block의 문제를 해소하였습니다. 그러나 Thread 간 전환에 드는 비용이 존재하므로 여러 개의 I/O를 처리하기 위해 여러 개의 Thread를 사용하는 것은 비효율 적으로 보입니다. Synchron..
2020.09.13 -
Spring boot 와 Spring Legacy 비교
Pre-set 설정 빌드 도구로 maven을 사용한다고 가정했을 때, Spring Legacy 프로젝트는 다양한 라이브러리를 pom.xml에 추가하고 추가적인 설정또한 xml로 작성해야합니다. 예를 들어 DB 연결이 들어간다면, pom.xml에 jdbc 관련 라이브러리르 추가하고 ORM을 mybatis를 쓴다면 함께 추가해야 합니다. 하지만 Spring Boot는 많은 사람들이 사용하던 설정을 Pre-set으로 구성해서 제공하므로 https://start.spring.io/에서 원하는 의존성 기능들을 추가한 뒤 다운로드 받고 import하면 빠르게 설정 내용을 프로젝트에 적용할 수 있습니다. WAS Spring Legacy 프로젝트를 진행하게 되면 WAS를 설치하고, 설정하는 등 초기에 적지 않은 시간을..
2020.09.10 -
Spring Batch
Batch Application Batch는 일괄처리 라는 뜻을 가지고 있습니다. 만약 하루 전 날의 데이터를 집계해야한다고 가정해보겠습니다. 하루 전 날의 데이터들을 모으면 상당히 많은 양의 데이터가 모입니다. 이렇게 큰 데이터를 읽고 가공하고 저장한다면 해당 서버는 순식간에 CPU, I/O등의 자원을 다 써버려서 다른 Request를 처리하지 못합니다. 그리고 이 기능은 하루에 1번 수행됩니다. 이를 위해 API를 구성하는 것은 많은 낭비입니다.이렇게 단발성으로 대용량의 데이터를 처리하는 Application을 Batch Application이라고 합니다. Batch Application은 다음의 조건들을 만족해야만 합니다. 대용량 데이터: Batch Application은 대량의 데이터를 가져오거나..
2020.07.02 -
Spring Boot
Spring Boot란 Spring Boot는 자주 사용하는 프로젝트 조합을 미리 만들어 Spring을 더욱 쉽고 간단하게 사용하기 위해 만들어진 Java Framework의 Project입니다. Spring이 지원하는 라이브러리, 하위 프로젝트들이 늘어나면서 무거워지고 초기 설정이 많아 프로젝트 초기 설정을 할 때 많은 어려움이 있었습니다. 이러한 어려움을 해결하기 위해 만들어진 것이 Spring Boot입니다. Spring Boot는 최소한의 초기 Spring 구성으로 가능한 빠르게 시작하고 실행할 수 있도록 설계되었습니다. Spring Boot의 특징 CoC(Convention over Configuration) 웹 어플리케이션을 개발하고자 할 때 일일이 관련 라이브러리를 찾아 추가할 필요 없이 s..
2020.06.09 -
Transaction Template
1. @Transactional의 한계 public class TransactionInvoker { private A1Dao a1dao; private A2Dao a2dao; public void setA1dao(A1Dao dao){ this.a1dao = dao; } public void setA2dao(A2Dao dao){ this.a2dao = dao; } // 외부에서 호출하는 method public void invoke() throws Exception{ doInternalTransaction(); } @Transactional public void doInternalTransaction() throws Exception{ a1dao.insertA1(); a2dao.insertA2(); } }..
2020.05.07