Improve the documentation of scoped beans definition

Resolves #1502
This commit is contained in:
Mahmoud Ben Hassine
2022-09-22 06:50:52 +02:00
parent 7b0e00e8a5
commit 499ec2b0ad

View File

@@ -2510,3 +2510,27 @@ or partitioned steps. Spring Batch does not control the threads spawned in these
use cases, so it is not possible to set them up correctly to use such beans. Hence,
it is not recommended to use job-scoped beans in multi-threaded or partitioned steps.
====
[[scoping-item-streams]]
==== Scoping `ItemStream` components
When using the Java configuration style to define job or step scoped `ItemStream` beans,
the return type of the bean definition method should be at least `ItemStream`. This is required
so that Spring Batch correctly creates a proxy that implements this interface, and therefore
honors its contract by calling `open`, `update` and `close` methods as expected.
It is recommended to make the bean definition method of such beans return the most specific
known implementation, as shown in the following example:
.Define a step-scoped bean with the most specific return type
[source, java]
----
@Bean
@StepScope
public FlatFileItemReader flatFileItemReader(@Value("#{jobParameters['input.file.name']}") String name) {
return new FlatFileItemReaderBuilder<Foo>()
.resource(new FileSystemResource(name))
// set other properties of the item reader
.build();
}
----