Class RepositoryItemReader<T>

  • All Implemented Interfaces:
    ItemReader<T>, ItemStream, ItemStreamReader<T>, org.springframework.beans.factory.InitializingBean

    public class RepositoryItemReader<T>
    extends AbstractItemCountingItemStreamItemReader<T>
    implements org.springframework.beans.factory.InitializingBean

    A ItemReader that reads records utilizing a PagingAndSortingRepository.

    Performance of the reader is dependent on the repository implementation, however setting a reasonably large page size and matching that to the commit interval should yield better performance.

    The reader must be configured with a PagingAndSortingRepository, a Sort, and a pageSize greater than 0.

    This implementation is thread-safe between calls to AbstractItemCountingItemStreamItemReader.open(ExecutionContext), but remember to use saveState=false if used in a multi-threaded client (no restart available).

    It is important to note that this is a paging item reader and exceptions that are thrown while reading the page itself (mapping results to objects, etc in the doPageRead()) will not be skippable since this reader has no way of knowing if an exception should be skipped and therefore will continue to read the same page until the skip limit is exceeded.

    NOTE: The RepositoryItemReader only reads Java Objects i.e. non primitives.

    Since:
    2.2
    Author:
    Michael Minella
    • Field Detail

      • logger

        protected org.apache.commons.logging.Log logger
    • Constructor Detail

      • RepositoryItemReader

        public RepositoryItemReader()
    • Method Detail

      • setArguments

        public void setArguments​(java.util.List<?> arguments)
        Arguments to be passed to the data providing method.
        Parameters:
        arguments - list of method arguments to be passed to the repository
      • setSort

        public void setSort​(java.util.Map<java.lang.String,​org.springframework.data.domain.Sort.Direction> sorts)
        Provides ordering of the results so that order is maintained between paged queries
        Parameters:
        sorts - the fields to sort by and the directions
      • setPageSize

        public void setPageSize​(int pageSize)
        Parameters:
        pageSize - The number of items to retrieve per page.
      • setRepository

        public void setRepository​(org.springframework.data.repository.PagingAndSortingRepository<?,​?> repository)
        The PagingAndSortingRepository implementation used to read input from.
        Parameters:
        repository - underlying repository for input to be read from.
      • setMethodName

        public void setMethodName​(java.lang.String methodName)
        Specifies what method on the repository to call. This method must take Pageable as the last argument.
        Parameters:
        methodName - name of the method to invoke
      • afterPropertiesSet

        public void afterPropertiesSet()
                                throws java.lang.Exception
        Specified by:
        afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
        Throws:
        java.lang.Exception
      • doPageRead

        protected java.util.List<T> doPageRead()
                                        throws java.lang.Exception
        Performs the actual reading of a page via the repository. Available for overriding as needed.
        Returns:
        the list of items that make up the page
        Throws:
        java.lang.Exception - Based on what the underlying method throws or related to the calling of the method