전체 글
-
Java8. 기본 메소드 (Default Method)와 스태틱 메소드 (Static Method)BackEnd/Java 2022. 1. 22. 04:10
기본 메소드 (Default Method) 기본 메소드란 인터페이스에 메소드 선언이 아니라 구현체를 제공하는 방법으로 해당 인터페이스를 구현한 클래스를 깨트리지 않고 새 기능을 추가할 수 있습니다. 단, Object가 제공하는 기능 (equals, hashCode)는 기본 메소드로 제공할 수 없습니다. 아래 Default 인터페이스와 Default 인터페이스를 구현한 DefaultClass가 있습니다. public class Application { public static void main(String[] args) { Default defaultClass = new DefaultClass(); defaultClass.printJava(); } } public interface Default { voi..
-
Java8. 메소드 레퍼런스 (Method Reference)BackEnd/Java 2022. 1. 20. 23:27
메소드 레퍼런스(Method Reference)란 ::를 사용하여 축약하는 방법입니다. 메소드 참조 방법 Static Method 참조 특정 객체 Instance Method 참조 생성자 참조 임의 객체 Instance Method 참조 메소드 또는 생성자의 매개변수로 람다의 입력 값을 받으며, 리턴 값 또는 생성한 객체는 람다의 리턴 값입니다. public class Hello { private String name; public Hello() {} public Hello(String name) { this.name = name; } public String print(String name) { return "Hello, " + name; } public String printName() { retur..
-
Java8. 람다 표현식 (Lambda Expressions)BackEnd/Java 2022. 1. 20. 22:54
람다 표현식(Lambda Expressions)이란 메소드를 하나의 식으로 표현하는 것으로, (매개변수 목록) -> { Body } 형태를 가집니다. IntelliJ 사용 시 아래 이미지처럼 회색으로 표시된 부분에서 Option + Enter를 누르면 자동으로 변환이 가능합니다. 매개변수 목록 매개변수가 없는 경우: () 매개변수가 한 개인 경우: (i) or i 매개변수가 여러개인 경우: (i, j) 매개변수의 타입은 컴파일러가 추론하기에 생략이 가능하나 명시할 수도 있습니다. (Integer i, Integer j) Body 화살표 오른쪽에 함수 본문을 정의하며, 여러 줄인 경우 {}를 사용해서 묶습니다. 한 줄인 경우에는 생략이 가능합니다. (return도 생략 가능) 람다 표현식에서는 final이..
-
Java8. 함수형 인터페이스 (Functional Interface)BackEnd/Java 2022. 1. 20. 22:04
함수형 인터페이스란 추상 메소드를 딱 하나만 가지고 있는 인터페이스입니다. @FunctionalInterface 애노테이션을 가지고 있는 SAM (Single Abstract Method) 인터페이스입니다. @java.lang.FunctionalInterface public interface FunctionalInterface { // 추상 메서드 (abstract method) void printJava(); // static method는 가질 수 있습니다. static void printStatic() { System.out.println("static method"); } // default method는 가질 수 있습니다. default void printDefault() { System.out..
-
30. Spring Batch TestBackEnd/Spring Batch 2022. 1. 14. 18:30
Spring Batch 4.1.x 이상 버전 (Boot 2.1) 기준 의존성 추가 (pom.xml) org.springframework.batch spring-batch-test test @SpringBatchTest 자동으로 ApplicationContext에 테스트에 필요한 여러 유틸 Bean을 등록해 주는 어노테이션 JobLauncherTestUtils: launchJob(), launchStep()과 같은 스프링 배치 테스트에 필요한 유틸성 메소드 지원 JobRepositoryTestUtils: JobRepository를 사용해서 JobExecution을 생성 및 삭제 기능 메소드 지원 StepScopeTestExecutionListener: @StepScope 컨텍스트를 생성해 주며 해당 컨텍스..
-
29. 리스너 (Listener)BackEnd/Spring Batch 2022. 1. 13. 22:20
Listener는 배치 흐름 중에 Job, Step, Chunk 단계의 실행 전후에 발생하는 이벤트를 받아 용도에 맞게 활용할 수 있도록 제공하는 인터셉터 개념의 클래스입니다. 각 단계별로 로그를 기록하거나 소요된 시간을 계산하거나 실행상태 정보들을 참조 및 조회할 수 있습니다. 이벤트를 받기 위해서는 Listener를 등록해야 하며 등록은 API 설정에서 각 단계별로 지정할 수 있습니다. Listeners JobExecutionListener: Job 실행 전후 StepExecutionListener: Step 실행 전후 ChunkListener: Chunk 실행 전후 (Tasklet 실행 전후), 오류 시점 ItemReadListener: ItemReader 실행 전후, 오류 시점, item이 nul..
-
28. 멀티 스레드 프로세싱 (Multi Thread Processing)BackEnd/Spring Batch 2022. 1. 8. 13:40
일반적으로 복잡한 처리나 대용량 데이터를 다루는 작업일 경우, 전체 소요 시간 및 성능상의 이점을 가져오기 위해 멀티 스레드 방식을 선택합니다. 멀티 스레드 처리 방식은 데이터 동기화 이슈가 존재하기 때문에 최대한 고려해서 결정해야 합니다. Spring Batch Thread Model 스프링 배치는 기본적으로 단일 스레드 방식으로 작업을 처리합니다. 성능 향상과 대규모 데이터 작업을 위한 비동기 처리 및 Scale out 기능을 제공합니다. Local과 Remote 처리를 지원합니다. 1. AsyncItemProcessor / AsyncItemWriter ItemProcessor, ItemWriter에게 별도의 스레드가 할당되어 작업을 처리하는 방식입니다. Step 안에서 ItemProcessor가 비..