Java 在ItemProcessor中发出自动连线Bean

Java 在ItemProcessor中发出自动连线Bean,java,hibernate,spring-batch,batch-processing,autowired,Java,Hibernate,Spring Batch,Batch Processing,Autowired,我必须将一个服务自动连接到我的ItemProcessor中,从数据库中检索一个对象并进行一些处理,但它不起作用,当我尝试在我的ItemProcessor中使用它时,我总是得到java.lang.NullPointerException 以下是上下文模型: <import resource="classpath:context-datasource.xml"/> <bean id="sessionFactory" class="org.springframework.o

我必须将一个服务自动连接到我的
ItemProcessor
中,从数据库中检索一个对象并进行一些处理,但它不起作用,当我尝试在我的
ItemProcessor
中使用它时,我总是得到
java.lang.NullPointerException

以下是上下文模型:

<import resource="classpath:context-datasource.xml"/>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />

    <property name="annotatedClasses">
        <list>
            <value>ma.controle.gestion.modele.Batch</value>
            <value>ma.controle.gestion.modele.Ressource</value>
        </list>

    </property>

    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.enable_lazy_load_no_trans">true</prop> 
        </props>
    </property>
</bean>

<!-- Transaction Manager is defined -->
<bean id="txManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />
}

这是我的Resourcedao

@Repository
公共类RessourceDao扩展了GenericDaoHibernateImpl{

@Autowired
@Qualifier("sessionFactory")
private SessionFactory sessionFactory;


@Autowired
public RessourceDao(@Qualifier("sessionFactory") SessionFactory sessionFactory){
    super(sessionFactory);
}


public Ressource findRessourceByMatricule(String matricule){
    System.out.println("Find ressource By Matricule, Dao");
    Ressource ressource=null;

    Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Ressource.class);
    criteria.add(Restrictions.eq("matricule",matricule));

    List<Ressource> ressources = criteria.list();

    for (Ressource ressource2 : ressources) {
        System.out.println("ressource nom, prenom " + ressource2.getNom() + "," + ressource2.getPrenom());
    }

    if(ressources.equals(null)){
        return null;
    }else{
        ressource=ressources.get(0);    
    }
    return ressource;
}
}

我在web inf中有另一个配置应用程序上下文,但当我运行批处理时,我访问了资源类路径中的此配置。

请从
BatchItemProcessor
类添加
groupByTypeInstRub
方法。异常在第43行抛出,但似乎您没有包含它。@deanclk这是一个m我在进程内调用的方法我让JU处理引发异常的一方。我会把它放进去。@DeanClark你看到问题了吗?我有另一个配置,但当我运行批处理时,我访问此配置,而不是web inf中的applicationContext此配置位于资源类路径中,没有行号,我无法说出cod的确切部分e抛出了异常…在
BatchItemProcessor.java
的第43行是什么?这就是您的问题所在。请从
BatchItemProcessor
类中添加
groupByTypeInstRub
方法。异常在第43行抛出,但似乎您没有包含它。@DeanClark这是我在进程I let JU中调用的方法引发异常的一方。我会把它放进去。@DeanClark你看到问题了吗?我有另一个配置,但当我运行批处理时,我访问此配置而不是web inf中的applicationContext此配置位于资源类路径中,没有行号,我无法说出代码的确切部分引发了异常…第43行是什么在
BatchItemProcessor.java
?这就是您的问题所在。
@Repository
@Autowired
@Qualifier("sessionFactory")
private SessionFactory sessionFactory;


@Autowired
public RessourceDao(@Qualifier("sessionFactory") SessionFactory sessionFactory){
    super(sessionFactory);
}


public Ressource findRessourceByMatricule(String matricule){
    System.out.println("Find ressource By Matricule, Dao");
    Ressource ressource=null;

    Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Ressource.class);
    criteria.add(Restrictions.eq("matricule",matricule));

    List<Ressource> ressources = criteria.list();

    for (Ressource ressource2 : ressources) {
        System.out.println("ressource nom, prenom " + ressource2.getNom() + "," + ressource2.getPrenom());
    }

    if(ressources.equals(null)){
        return null;
    }else{
        ressource=ressources.get(0);    
    }
    return ressource;
}
}
java.lang.NullPointerException
at ma.controle.gestion.springbatch.BatchItemProcessor.groupByTypeInstRub(BatchItemProcessor.java:43)
at ma.controle.gestion.springbatch.BatchItemProcessor.process(BatchItemProcessor.java:30)
at ma.controle.gestion.springbatch.BatchItemProcessor.process(BatchItemProcessor.java:1)
at org.springframework.batch.core.step.item.SimpleChunkProcessor.doProcess(SimpleChunkProcessor.java:125)
at org.springframework.batch.core.step.item.SimpleChunkProcessor.transform(SimpleChunkProcessor.java:291)
at org.springframework.batch.core.step.item.SimpleChunkProcessor.process(SimpleChunkProcessor.java:190)
at org.springframework.batch.core.step.item.ChunkOrientedTasklet.execute(ChunkOrientedTasklet.java:74)
at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:386)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:264)
at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:76)
at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:367)
at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:214)
at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:143)
at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:250)
at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:195)
at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:135)
at org.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:61)
at org.springframework.batch.core.job.flow.support.state.StepState.handle(StepState.java:60)
at org.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:144)
at org.springframework.batch.core.job.flow.support.SimpleFlow.start(SimpleFlow.java:124)
at org.springframework.batch.core.job.flow.FlowJob.doExecute(FlowJob.java:135)
at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:293)
at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:120)
at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:48)
at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:114)
at ma.controle.gestion.bean.batch.BatchExcelBean.uploadFile(BatchExcelBean.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:279)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at org.primefaces.component.fileupload.FileUpload.broadcast(FileUpload.java:319)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:755)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.primefaces.barcelona.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:32)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:958)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)