From e8507a073c97ab50a9867823053c007e9b18f5d3 Mon Sep 17 00:00:00 2001 From: z3rotig4r Date: Mon, 8 Jun 2026 18:10:53 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20EgovMyBatisBatchItemWriter=EC=9D=98=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20ref?= =?UTF-8?q?lection=20=EB=A3=A8=ED=94=84=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit write()가 chunk의 각 item에 대해 BeanInfo/PropertyDescriptor 기반 reflection으로 파라미터 Map을 생성하여 List에 모았으나, 이 결과는 어디에도 사용되지 않고 super.write(chunk)가 원본 chunk로 호출되어 전량 폐기되고 있었습니다. 대용량 배치 write 경로에서 chunk마다 item별 Introspector.getBeanInfo + getPropertyDescriptors + getter 호출이 불필요하게 수행되므로, 결과가 사용되지 않는 죽은 코드를 제거했습니다. super.write 동작은 동일하게 유지됩니다. 검증: EgovMybatisTest(본 writer로 DB update step 포함 Job 실행) 통과. 참고: 위 Map은 본래 공유 변수를 statement 파라미터에 주입하려던 의도로 보이나 실제로는 배선되지 않아 동작하지 않습니다. 변수 주입 기능 복구는 별도 이슈로 추적합니다. --- .../database/EgovMyBatisBatchItemWriter.java | 50 ------------------- 1 file changed, 50 deletions(-) diff --git a/Batch/org.egovframe.rte.bat.core/src/main/java/org/egovframe/rte/bat/core/item/database/EgovMyBatisBatchItemWriter.java b/Batch/org.egovframe.rte.bat.core/src/main/java/org/egovframe/rte/bat/core/item/database/EgovMyBatisBatchItemWriter.java index 958e0746..45be76e8 100755 --- a/Batch/org.egovframe.rte.bat.core/src/main/java/org/egovframe/rte/bat/core/item/database/EgovMyBatisBatchItemWriter.java +++ b/Batch/org.egovframe.rte.bat.core/src/main/java/org/egovframe/rte/bat/core/item/database/EgovMyBatisBatchItemWriter.java @@ -19,21 +19,6 @@ import org.egovframe.rte.bat.support.EgovResourceVariable; import org.egovframe.rte.bat.support.EgovStepVariableListener; import org.mybatis.spring.batch.MyBatisBatchItemWriter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.batch.item.Chunk; -import org.springframework.util.ReflectionUtils; - -import java.beans.BeanInfo; -import java.beans.IntrospectionException; -import java.beans.Introspector; -import java.beans.PropertyDescriptor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; /** * EgovMyBatisBatchItemWriter 클래스 @@ -54,8 +39,6 @@ */ public class EgovMyBatisBatchItemWriter extends MyBatisBatchItemWriter { - private static final Logger LOGGER = LoggerFactory.getLogger(EgovMyBatisBatchItemWriter.class); - /** * egovframework EgovResourceVariable */ @@ -95,37 +78,4 @@ public void setStepVariable(EgovStepVariableListener stepVariable) { this.stepVariable = stepVariable; } - @Override - @SuppressWarnings("unchecked") - public void write(Chunk chunk) { - List list = new ArrayList<>(); - Map map; - - try { - for (T item : chunk.getItems()) { - map = new HashMap<>(); - BeanInfo beanInfo = Introspector.getBeanInfo(item.getClass()); - - if (resourceVariable != null) - map.putAll(resourceVariable.getVariableMap()); - if (jobVariable != null) - map.putAll(jobVariable.getVariableMap()); - if (stepVariable != null) - map.putAll(stepVariable.getVariableMap()); - - for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) { - Method reader = pd.getReadMethod(); - if (reader != null) - map.put(pd.getName(), reader.invoke(item)); - } - - list.add(map); - } - } catch (IntrospectionException | IllegalAccessException | InvocationTargetException e) { - ReflectionUtils.handleReflectionException(e); - } - - super.write((Chunk) chunk); - } - }