Spring(19)
-
Spring + Hibernate Validator Custom Message
Java Bean Validation 일반적으로 데이터 검증(Validation)은 여러 계층에 걸쳐서 이루어지게 됩니다. 거의 동일한 내용의 검증 로직이 각 계층별로 구현된다면 그것은 중복이고 낭비가 심한 작업입니다. 또한 그러한 경우 각 계층별로 구현된 검증 로직간 불일치로 인해 오류가 발생하기도 쉽습니다. 이를 해결하기 위해 데이터 검증을 위한 로직을 도메인 모델 자체에 묶어서 표현하는 방법이 있습니다. 실제 코드로 표현된다면 너무 장황하고 복잡하기 때문에, Java에서는 Bean Validation이라는 이름으로 Annotation을 데이터 검증을 위한 메타 데이터로 사용하는 방법을 제시하고 있습니다. Hibernate Validator Hibernate Validator는 Bean Validat..
2020.09.15 -
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