[ksug] spring batch์— ๋Œ€ํ•˜์—ฌ ๋ช‡๊ฐ€์ง€ ์งˆ๋ฌธ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

450 views
Skip to first unread message

Myoungsoo Shin

unread,
Dec 28, 2009, 2:57:57โ€ฏAM12/28/09
to ks...@googlegroups.com
์•ˆ๋…•ํ•˜์„ธ์š” ์Šคํ”„๋ง ๋ฐฐ์น˜๋ฅผ ์˜ค๋Š˜ ๋ถ€ํ„ฐ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ์Šคํ”„๋ง ์ดˆ๋ณด์ž…๋‹ˆ๋‹ค.ย 
๋ช‡๊ฐ€์ง€ ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์–ด์„œ ์—ผ์น˜๋ถˆ๊ตฌํ•˜๊ณ  ์งˆ๋ฌธ์„ ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. :-)

1. ์‹คํŒจํ•œ Item๋“ค๋งŒ ๋‹ค์‹œ ๋ฐฐ์น˜ ์ž‘์—…์ด ๊ฐ€๋Šฅํ• ๊นŒ์š”?
์‹คํŒจํ•œ JobInstance์— ๋Œ€ํ•˜์—ฌ ์‹คํŒจํ•œ ์‹œ์ ๋ถ€ํ„ฐ๋Š” ๊ฐ€๋Šฅํ•œ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋Š”๋ฐ์š”.ย 
์‹คํŒจํ•œ Items๋งŒ ๋”ฐ๋กœ ๋‹ค์‹œ ํŠน์ •์‹œ๊ฐ„(์˜ˆ:1์‹œ๊ฐ„ํ›„,2์‹œ๊ฐ„ํ›„) retry-limit์„ ์ค„์ˆ˜ ์žˆ์„๊นŒ์š”?

2. 1:๋‹ค๋กœ ๋œ ๊ตฌ์กฐ(๋ถ€๋ชจ-์ž์‹๊ด€๊ณ„)์—์„œ ๊ฐ๊ฐ ItemReader์„ ๋งŒ๋“ค๊ณ  ์ž์‹ ItemReader์—์„œ ๋ถ€๋ชจ ItemReader์˜ ์ •๋ณด(์˜ˆ:metaId)์„ ์ฝ์–ด์„œ read์„ ํ• ์ˆ˜ ์žˆ์„๊นŒ์š”?
๋””๋น„๊ฐ€ ์•„๋‹ˆ๋ผ xml์ด ๊ทธ๋Ÿฐ์‹์˜ ๊ตฌ์กฐ์ธ๋ฐ์š”. ํ . ๊ฐ€๋Šฅ ํ• ๊นŒ์š”? +_+
์ œ๊ฐ€ ๋˜ ์šฐ๋ฌธ์„ ๋˜์ง€๋Š” ๊ฒƒ ๊ฐ™๊ธด ํ•œ๋ฐ์š”. ย ํ•œ job์ด๋‚˜ step์—์„œ ItemReaders๋‚˜ ItemWriters๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ• ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”? +_+


3. ํŠน์ • rest based api์—์„œ ๋ฆฌํ„ดํ•˜๋Š” XML์„ ItemReader๋กœ ์ฝ๊ณ  ์‹ถ์€๋ฐ์š”. ItemReader์˜ Resource์„ UrlResource์„ ์ด์šฉํ•ด์„œ StaxEventItemReader์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ ๊นŒ์š”?
์ฒจ ์ƒ๊ฐ์€ Spring 3.0์— ๋‚˜์˜จ RestTemplate์„ ์‚ฌ์šฉํ•ด์„œ ์ฝ์œผ๋ฉด ์–ด๋–จ๊นŒ ์‹ถ์—ˆ๋Š”๋ฐ์š”. ItemProcessor์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ๋งž๋Š”์ง€๋„ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.ย 

์Šคํ”„๋ง ๋ฐฐ์น˜ ๋„˜ ์–ด๋ ต๋„ค์š”. T_T
์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

--
email: anar...@gmail.com
blog: http://anarcher.appspot.com/

Sanghyuk Jung

unread,
Dec 28, 2009, 4:16:52โ€ฏAM12/28/09
to ks...@googlegroups.com
1. ์‹คํŒจํ•œ ๊ฑด์„ ๋”ฐ๋กœ Listener๋ฅผ ์ด์šฉํ•ด์„œ ํŠน์ • ํด๋”์— ์“ด๋‹ค๋˜์ง€ ํ•ด์„œ ๋ชจ์•„๋‘๊ณ , ๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” job์„ ๋”ฐ๋กœ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋‚˜์„๋“ฏํ•ฉ๋‹ˆ๋‹ค.ItemWriteListener.onWriteError ๊ฐ™์€ ๊ฒƒ์„ ์ด์šฉํ•ด์„œ ์‹คํŒจํ•œ ๊ฑด๋งŒ ๋”ฐ๋กœ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์•ˆ์—์„œ ๋ณ„๋„์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ์“ด๋‹ค๋˜์ง€DB์— ํ‘œ์‹œํ•œ๋‹ค๋˜์ง€ํ•ด์„œ(๊ฐ™์ด ๋กค๋ฐฑ๋˜์ง€ ์•Š๊ฒŒ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.) ํ•œ๋‘์‹œ๊ฐ„ ํ›„์— ๋ณ„๋„์˜ ์Šค์ผ€๋ทธ๋กœ ์‹คํŒจ๋กœ ๋ถ„๋ฅ˜๋œ ๊ฒƒ๋งŒ ๋‹ค์‹œ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
2. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ณผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ย ItemProcessor๋ฅผ ์ด์šฉํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ItemReader๋ฅผ ๊ฒฐํ•ฉํ•ด์„œ ๋ถ€๋ชจ,์ž์‹๊ฐ„์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด ์ค„์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.ย  DB์˜ ๋ถ€๋ชจ-์ž์‹๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ์—”ํ‹ฐํ‹ฐ๋ฅผ XML๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒฝ์šฐ์— N+1์ฟผ๋ฆฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก 2๊ฐœ์˜ JdbcCursorItemReader๋ฅผ ์ด์šฉํ•ด์„œย ํ‚ค์ˆœ๋Œ€๋กœ ์ •๋ ฌํ•ด์„œ DB์—์„œ ์กฐํšŒํ•ด์ค€๋‹ค์Œ์— ItemProcessor์•ˆ์—์„œ ์—ฎ์–ด์„œ XMl์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ํ•ด๋ณธ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. (์ด ์ž‘์—…์€ 1.x๋Œ€์—์„œ ํ•ด์„œ ๊ทธ๋•Œ๋Š” DelegateItemReader์ธ๊ฐ€.. ๊ทธ๊ฑธย  ์ผ์—ˆ์ง€์š”;)
๊ทธ๋ฆฌ๊ณ  ๋ณดํ†ต์€ ExcecutionContext๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ™์€ step์ด๋‚˜ job์•ˆ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ณ , ItemListener์™€ ItemProcessor ๋“ฑ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋™์‹œ์— ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ฐ™์€ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด ๊ฒฝ์šฐ์—๋Š” ๊ฐ์ฒด๊ฐ€ ๊ณ„์† ์Œ“์ด์ง€ ์•Š๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๋ฆญ์— ์ฃผ์˜ํ•ด์•ผ๊ฒ ์ฃ )
ย 
3. UrlResource๋ฅผ ๋ฐ”๋กœ ์ด์šฉํ•ด์„œ ์—ฐ๊ฒฐํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์•„๋ฌด๋ž˜๋„ ๋‚˜์ค‘์— ์‹คํŒจ์‹œ ์ถ”์ ๋“ฑ์„ ์œ„ํ•ด์„œ URL์—์„œ ํŒŒ์ผ๋กœ download ๋ฐ›์•„ ๋†“๋Š” ๊ฒƒ์ด ์ข‹์€ ๊ฒƒ ๊ฐ™์•„์„œ ์ €๋Š” ๋น„์Šทํ•œ ๊ฒฝ์šฐ์— ๋‹ค์šด๋กœ๋“œ๋ฅผ ํ•˜๋Š” step๋ฅผ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•˜๊ณ , ๋‹ค์šด๋œ ํŒŒ์ผ์„ ์ฝ์–ด์„œ xmlํŒŒ์‹ฑ์„ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์†Œ์Šค๋ฅผ ์ด์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

public class ResourceCopyTasklet implements Tasklet {
ย 
ย private Resource source;
ย private Resource destination;
ย public void setSource(Resource source) {
ย ย this.source = source;
ย }
ย public void setDestination(Resource destination) {
ย ย this.destination = destination;
ย }
ย @Override
ย public RepeatStatus execute(StepContribution contribution,
ย ย ย ChunkContext chunkContext) throws Exception {
ย ย Assert.notNull(source,"source must not null");
ย ย Assert.notNull(destination,"destination must not null");
ย ย 
ย ย FileUtils.copyURLToFile(source.getURL(), destination.getFile());
ย ย contribution.incrementReadCount();
ย ย contribution.incrementWriteCount(1);
ย ย return RepeatStatus.FINISHED;
ย }
}
๊ทธ๋ฆฌ๊ณ  ์„ค์ •ํ• ๋•Œ๋Š” ์•„๋ž˜์ฒ˜๋Ÿผํ•˜์ฃ 
ย <bean id="resouceCopyTasklet" class=".....ResourceCopyTasklet">
ย ย <property name="source" value="http://www.naver.com"/>
ย ย <property name="destination" value="file:target/output.txt"/>
ย </bean>
ย 
์•„๋ž˜์™€ ๊ฐ™์€ ์‹์œผ๋กœ ํ•˜๋ฉด ๋‹ค์šด๋กœ๋“œํ•œ ํŒŒ์ผ์— jobParameter์˜ ์ผ๋ถ€๋ฅผ ๋„ฃ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.ย  (์ด๋•Œ๋Š” scope="step"์œผ๋กœ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.)
ย 
ย ย <property name="destination"
ย ย ย value="...download_#{jobParameters[downloadDate]}.xml" />
์ด๋ ‡๊ฒŒ ๊ฐ ์‹œ๋„๋•Œ๋งˆ๋‹ค ์ผ๋‹จ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„ ๋†“์œผ๋‹ˆ ๋‚˜์ค‘์— ์—๋Ÿฌ๊ฐ€ ๋‚ฌ์„ ๋•Œ ์ถ”์ ํ•˜๊ธฐ๋„ ๊ดœ์ฐฎ๋”๊ตฐ์š”.
ย 
ย 
ย 
2009๋…„ 12์›” 28์ผ ์˜คํ›„ 4:57, Myoungsoo Shin <anar...@gmail.com>๋‹˜์˜ ๋ง:

--

Google ๊ทธ๋ฃน์Šค 'Korea Spring User Group' ๊ทธ๋ฃน์— ๊ฐ€์ž…ํ–ˆ์œผ๋ฏ€๋กœ ๋ณธ ๋ฉ”์ผ์ด ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ทธ๋ฃน์— ๊ฒŒ์‹œํ•˜๋ ค๋ฉด ks...@googlegroups.com(์œผ)๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์„ธ์š”.
๊ทธ๋ฃน์—์„œ ํƒˆํ‡ดํ•˜๋ ค๋ฉด ksug+uns...@googlegroups.com๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.
๋” ๋งŽ์€ ์˜ต์…˜์„ ๋ณด๋ ค๋ฉด http://groups.google.com/group/ksug?hl=ko์—์„œ ๊ทธ๋ฃน์„ ๋ฐฉ๋ฌธํ•˜์„ธ์š”.

Myoungsoo Shin

unread,
Dec 28, 2009, 4:29:05โ€ฏAM12/28/09
to ks...@googlegroups.com
์™€. ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. +_+ย 
์ข€๋” ์ž์„ธํžˆ ์ฝ์–ด๋ณด๊ณ  ์ƒ๊ฐํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.ย 
์นœ์ ˆํ•œ ๋‹ต๋ณ€ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

ps) SpringBatch ์ฑ… ํ•˜๋‚˜ ์“ฐ์‹ค ์ƒ๊ฐ ์—†์œผ์‹ ๊ฐ€์š”? +_+


2009/12/28 Sanghyuk Jung <ben...@gmail.com>

Sanghyuk Jung

unread,
Dec 28, 2009, 5:18:44โ€ฏAM12/28/09
to ks...@googlegroups.com
๋„ค, ์ฑ…์€ ์“ฐ๊ณ ๋Š” ์žˆ๋Š”๋ฐ, ์–ธ์ œ ๋‚˜์˜ฌ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋„ค์š” ^^;

ย 
2009๋…„ 12์›” 28์ผ ์˜คํ›„ 6:29, Myoungsoo Shin <anar...@gmail.com>๋‹˜์˜ ๋ง:

์‹ ์Šนํ•œ

unread,
Dec 28, 2009, 6:06:20โ€ฏAM12/28/09
to ks...@googlegroups.com

์ฑ… ๋ฌด์ง„์žฅ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค~



2009๋…„ 12์›” 28์ผ ์˜คํ›„ 7:18, Sanghyuk Jung <ben...@gmail.com>๋‹˜์˜ ๋ง:

Myoungsoo Shin

unread,
Jan 4, 2010, 3:32:49โ€ฏAM1/4/10
to ks...@googlegroups.com
์ด๋ฒˆ์— ์ฒ˜์Œ์œผ๋กœ ์Šคํ”„๋ง ๋ฐฐ์น˜๋ฅผ ์จ๋ดค์Šต๋‹ˆ๋‹ค. (์•„์ฃผ ๊ฐ„๋‹จํ•œ ๊ฒƒ์ด์—ˆ์ง€๋งŒ์š” :-)ย 

2009/12/28 Sanghyuk Jung <ben...@gmail.com>

1. ์‹คํŒจํ•œ ๊ฑด์„ ๋”ฐ๋กœ Listener๋ฅผ ์ด์šฉํ•ด์„œ ํŠน์ • ํด๋”์— ์“ด๋‹ค๋˜์ง€ ํ•ด์„œ ๋ชจ์•„๋‘๊ณ , ๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” job์„ ๋”ฐ๋กœ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋‚˜์„๋“ฏํ•ฉ๋‹ˆ๋‹ค.ItemWriteListener.onWriteError ๊ฐ™์€ ๊ฒƒ์„ ์ด์šฉํ•ด์„œ ์‹คํŒจํ•œ ๊ฑด๋งŒ ๋”ฐ๋กœ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์•ˆ์—์„œ ๋ณ„๋„์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ์“ด๋‹ค๋˜์ง€DB์— ํ‘œ์‹œํ•œ๋‹ค๋˜์ง€ํ•ด์„œ(๊ฐ™์ด ๋กค๋ฐฑ๋˜์ง€ ์•Š๊ฒŒ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.) ํ•œ๋‘์‹œ๊ฐ„ ํ›„์— ๋ณ„๋„์˜ ์Šค์ผ€๋ทธ๋กœ ์‹คํŒจ๋กœ ๋ถ„๋ฅ˜๋œ ๊ฒƒ๋งŒ ๋‹ค์‹œ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
RestAPI์œผ๋กœ ์ฝ์–ด์™€์„œ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋ผ์„œ Client Exception(404,500 error๋“ฑ)์„ skipํ•˜๊ณ  SkipListener์„ ๊ตฌํ˜„ํ•ด์„œ ๋”ฐ๋กœ ๋””๋น„์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.ย 
ย 
2. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ณผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ย ItemProcessor๋ฅผ ์ด์šฉํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ItemReader๋ฅผ ๊ฒฐํ•ฉํ•ด์„œ ๋ถ€๋ชจ,์ž์‹๊ฐ„์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด ์ค„์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.ย  DB์˜ ๋ถ€๋ชจ-์ž์‹๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ์—”ํ‹ฐํ‹ฐ๋ฅผ XML๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒฝ์šฐ์— N+1์ฟผ๋ฆฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก 2๊ฐœ์˜ JdbcCursorItemReader๋ฅผ ์ด์šฉํ•ด์„œย ํ‚ค์ˆœ๋Œ€๋กœ ์ •๋ ฌํ•ด์„œ DB์—์„œ ์กฐํšŒํ•ด์ค€๋‹ค์Œ์— ItemProcessor์•ˆ์—์„œ ์—ฎ์–ด์„œ XMl์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ํ•ด๋ณธ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. (์ด ์ž‘์—…์€ 1.x๋Œ€์—์„œ ํ•ด์„œ ๊ทธ๋•Œ๋Š” DelegateItemReader์ธ๊ฐ€.. ๊ทธ๊ฑธย  ์ผ์—ˆ์ง€์š”;)
๊ทธ๋ฆฌ๊ณ  ๋ณดํ†ต์€ ExcecutionContext๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ™์€ step์ด๋‚˜ job์•ˆ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ณ , ItemListener์™€ ItemProcessor ๋“ฑ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋™์‹œ์— ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ฐ™์€ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด ๊ฒฝ์šฐ์—๋Š” ๊ฐ์ฒด๊ฐ€ ๊ณ„์† ์Œ“์ด์ง€ ์•Š๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๋ฆญ์— ์ฃผ์˜ํ•ด์•ผ๊ฒ ์ฃ )
ย 
์—ฌ๋Ÿฌ API์„ ํ˜ธ์ถœํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋“ฑ๋กํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋ผ์„œ ItemProcessor์—์„œ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœํ•˜์—ฌ ๋ชจ๋ธ๋“ค์—๊ฒŒ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. CompositeReader๋‚˜ CompositeWriter๋“ฑ์ด ์žˆ์–ด์„œ ์žฌ์‚ฌ์šฉ์ด ์ƒ๊ธด๋‹ค๋ฉด ๊ฐ๊ฐ ItemProcessor๋‚˜ ItemReader์„ ๋งŒ๋“ค๊ณ ย 
์กฐํ•ฉํ•ด๋„ ๋ ๋“ฏ ํ•œ๋ฐ์š”. (๊ท€์ฐฎ์•„์„œ ์•ˆ ๊ทธ๋žฌ์–ด์—ผ.;;)
ItemStream์„ ๊ตฌํ˜„ํ•ด์„œ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๋„ ๋‚˜์˜์ง€ ์•Š์„ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค. ํ .ย 
์—ญ์‹œ ์ €๋Š” ๋””๋น„์—๋‹ค๊ฐ€ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ใ…Žใ…Ž ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ์ง€๋งŒ ItemProcessor์— Service์„ DIํ•ด์„œ ๊ทธ๋ƒฅ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.;;

๋ฉฐ์น  ์•ˆ ์จ๋ดค์ง€๋งŒ. ์ฒจ์œผ๋กœ ์จ๋ดค๋‹ค๋Š” ๊ฒƒ์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ใ…Žใ…Ž
์นœ์ ˆํ•œ ๋‹ต๋ณ€ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. :-)ย 

Reply all
Reply to author
Forward
0 new messages