2013-09-06 1 views
0

Я новичок в Spring Batch, поэтому попрошу дать некоторые основные советы.spring-batch: загрузить и использовать файл с недвижимостью

Каков наилучший способ загрузки конфигурационного файла в память (или bean-компонент) и использование его содержимого во время работы весов Job/step?

Я не уверен, но, основываясь на какой-то поиск Google я нашел ниже сценарий, даже если я не совсем понимаю, почему я должен определить писатель, даже если я не нужен:

  1. step1: нагрузки конфигурационный файл (содержимое два поля ограничена =)
  2. step2: выполнить некоторые Java-код и использовать предыдущий конфигурационный файл

так для шага 1:

<bean id="inputFile" class="org.springframework.core.io.FileSystemResource" scope="step"> 
    <constructor-arg value="path_config_file"/> 
</bean> 

<bean id="readerConfigFile" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step"> 
    <property name="resource" ref="inputFile"/> 
    <property name="lineMapper"> 
     <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper"> 
      <property name="lineTokenizer"> 
       <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer"> 
        <property name="names" value="field,value"/> 
        <property name="delimiter" value="="/> 
       </bean> 
      </property> 
      <property name="fieldSetMapper"> 
       <bean class="org.springframework.batch.item.file.mapping.BeanWrapperFieldSetMapper"> 
        <property name="prototypeBeanName" value="configProperties"/> 
       </bean> 
      </property> 
     </bean> 
    </property> 
</bean> 

<bean id="outputConfig" class="outputConfig"></bean> 

<bean id="configProperties" class="configProperties" scope="prototype"/> 

поэтому мой вопрос являются:

  1. Как я могу использовать собранную информацию в файле? Должен ли я помещать их в Java-компонент?
  2. Как я могу узнать эту информацию между разными шагами или сделать их постоянными в течение всего жизненного цикла приложения?
  3. Вы бы рекомендовали использовать элементProcessor для достижения вышеуказанного?

Любые советы являются наиболее чем приветственном

ответ

2

Я немного запутался о ваших вопросов, потому что я думаю, вам нужно всего лишь загрузить файл свойств в контексте яровой использованием PropertiesFactoryBean:

<bean id="config" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
     <property name="location"> 
     <value>file:path_config_file</value> 
     </property> 
    </bean> 

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="propertiesArray"> 
     <list> 
      <ref bean="config"/> 
     </list> 
     </property> 
    </bean> 

и вы можете ссылаться на значения свойств, используя $ {} placeholder; но это решение не связано с весенней периодичностью; Мне это не нужно!

О вопросах:

  1. с использованием POJO является хорошим способом, потому что весна-партия предлагает в коробке стратегий отображения (BeanWrapperFieldSetMapper в вашем случае)
  2. Объектов, используемые в работе, доступны только в контекст работы, а не в контексте приложения (вот почему я думаю, что вам нужен PropertiesFactoryBean).
    Чтобы передать объект между шагами чтения How can we share data between the different steps of a Job in Spring Batch?
  3. ItemProcessor запрашивается, если вам нужно преобразовать объект T считанного из ItemReader<T> на объект типа S, написанный ItemWriter<S>. Так что нет, вам не нужен ItemProcessor.

Я надеюсь, что было ясно, английский язык не мой родной язык

+0

Да, я просто хочу, чтобы загрузить файл свойств и использовать содержимое файла в моем приложении. Ваш ответ разрешил некоторые сомнения и поставил себя в правильном направлении. Не знал о POJO .. Отлично. Спасибо Bellabax – user1611183