전체 글
-
Functional Interface 정리BackEnd/Java 2025. 1. 7. 23:14
함수형 인터페이스Functional Interface 내용 추가해서 한 번 더 정리.java.util.function package함수형 인터페이스메서드설명java.lang.Runnablevoid run()매개변수도 없고, 반환값도 없음SupplierT get()매개변수는 없고, 반환값만 있음Consumervoid accept(T t)Supplier와 반대로 매개변수만 있고 반환값이 없음FunctionR apply(T t)일반적인 함수. 하나의 매개변수를 받아 결과를 반환Predicateboolean test(T t)조건식을 표현하는데 사용됨. 매개변수는 하나. 반환 타입은 booleanSupplier 는 공급자. 매개변수가 없지만 반환값이 있다.Consumer 는 소비자. 매개변수가 있고 반환값이 없다..
-
[Java] Super Type TokenBackEnd/Java 2024. 12. 25. 18:01
List, List 등의 class 리터럴을 (아이템 33의 제약2 참고) 구할 수 없다.List.class로만 사용이 가능하다.이 단점을 극복하기 위한 방법으로 Super Type Token이 있다.닐 게프터의 슈퍼 타입 토큰https://gafter.blogspot.com/2006/12/super-type-tokens.htmlhttps://gafter.blogspot.com/2007/05/limitation-of-super-type-tokens.html 상속을 사용해서 Generic을 썼을 때 GenericType 을 알아낼 수 있는 방법에 기반하고있어서 'Super'라는 이름이 붙었다.public class GenericTypeInfer { static class Super { T..
-
아이템 33. 타입 안전 이종 컨테이너를 고려하라Study/Effective Java 2024. 12. 22. 19:17
제네릭은 하나의 컨테이너에서 매개변수화할 수 있는 타입의 수가 제한된다.하지만 더 유연한 수단이 필요하다고 해보자. 컨테이너 대신 키를 매개변수화한 다음, 컨테이너에 값을 넣거나 뺄 때 매개변수화한 키를 함께 제공하면 된다. 이러한 설계 방식을 타입 안전 이종 컨테이너 패턴(type safe heterogeneous container pattern)이라고 한다.타입 안전하지 않은 예제 먼저 보자.public class Favorites { private Map map = new HashMap(); public void put(Class clazz, Object value) { this.map.put(clazz, value); } public Object get(Class..
-
스프링 배치 실행 -FlowJob start() / next()Study/Spring Batch 2024. 4. 30. 00:00
1) start(), next()@Beanpublic Job batchJob() { return jobBuilderFactory.get("batchJob") .start(flowA()) // 처음 실행할 Flow 설정. // Flow가 인자로 오면 JobFlowBuilder 반환 // Step이 인자로 오면 SimpleJobBuilder 반환. on 메서드를 통해 JobFlowBuilder를 반환할 수 있음. .next(step3()) // next 메서드의 인자로 Step, Flow, JobExecutionDecider가 올 수 있다. .end() .build(..
-
스프링 배치 실행 -FlowJob 개념 및 APIStudy/Spring Batch 2024. 4. 29. 23:20
1) 기본 개념Step 을 순차적으로만 구성하는 것이 아닌 특정한 상태에 따라 흐름을 전환하도록 구성할 수 있으며 FlowJobBuilder 에 의해 생성된다.Step 이 실패 하더라도 Job 은 실패로 끝나지 않도록 해야 하는 경우Step 이 성공 했을 때 다음에 실행해야 할 Step 을 구분해서 실행 해야 하는경우특정 Step은 전혀 실행되지 않게 구성 해야 하는 경우Flow 와 Job 의 흐름을 구성하는데만 관여하고 실제 비즈니스 로직은 Step 에서 이루어진다내부적으로 SimpleFlow 객체를 포함하고 있으며 Job 실행 시 호출한다 2) SimpleJob vs FlowJobSimpleJobFlowJob순차적 흐름조건적 흐름Step A 가 가장 먼저 실행Step A 가 실패 하면 전체 Job ..
-
스프링 배치 실행 -JobStepStudy/Spring Batch 2024. 4. 23. 00:37
1) 기본 개념 Job 에 속하는 Step 중 외부의 Job 을 포함하고 있는 Step. 외부의 Job 이 실패하면 해당 Step 이 실패하므로 결국 최종 기본 Job 도 실패한다. 모든 메타데이터는 기본 Job 과 외부 Job 별로 각각 저장된다. 커다란 시스템을 작은 모듈로 쪼개고 job의 흐름를 관리하고자 할 때 사용할 수 있다 2) StepBuilderFactory > StepBuilder > JobStepBuilder > JobStep @RequiredArgsConstructor @Configuration public class JobStepConfiguration { private final JobBuilderFactory jobBuilderFactory; private final StepBu..
-
스프링 배치 실행 -tasklet(), startLimit()/allowStartIfComplete()Study/Spring Batch 2024. 4. 22. 22:47
1. tasklet() 1) 기본개념 Tasklet 타입의 클래스를 설정한다. Step 내에서 구성되고 실행되는 도메인 객체로서 주로 단일 태스크를 수행하기위한 것. TaskletStep 에 의해 반복적으로 수행되며 반환값에 따라 계속 수행 혹은 종료한다. RepeatStatus - Tasklet 의 반복 여부 상태 값 RepeatStatus.FINISHED - Tasklet 종료, RepeatStatus 을 null 로 반환하면 RepeatStatus.FINISHED로 해석됨. RepeatStatus.CONTINUABLE - Tasklet 반복. RepeatStatus.FINISHED가 리턴되거나 실패 예외가 던져지기 전까지 TaskletStep 에 의해 while 문 안에서 반복적으로 호출됨. (무한..