1

メモリ内の jobRepository を jobExplorer に共有しようとしていました。しかし、次のようにエラーがスローされます。

ネストされた例外は

org.springframework.beans.ConversionNotSupportedException:
Failed to convert property value of type '$Proxy1 implementing
org.springframework.batch.core.repository.JobRepository,org.
springframework.aop.SpringProxy,org.springframework.aop.framework.Advised'
to required type

共有のためにjobExplorerに渡すときに、jobRepositoryの前に「&」記号を入れてみましたが、無駄に終わりました。

Spring Batch 2.2.1 を使用しています

jobExplorer の依存関係はインメモリではなくデータベースのみですか?

定義は、

<bean id="jobRepository"
        class="com.test.repository.BatchRepositoryFactoryBean">
        <property name="cache" ref="cache" />
        <property name="transactionManager" ref="transactionManager" />
</bean>

<bean id="jobOperator" class="test.batch.LauncherTest.TestBatchOperator">
        <property name="jobExplorer" ref="jobExplorer" />
        <property name="jobRepository" ref="jobRepository" />
        <property name="jobRegistry" ref="jobRegistry" />
        <property name="jobLauncher" ref="jobLauncher" />
</bean>

<bean id="jobExplorer" class="test.batch.LauncherTest.TestBatchExplorerFactoryBean">
        <property name="repositoryFactory" ref="&jobRepository" />
</bean>  


    <bean id="transactionManager"
        class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />

    <bean id="jobLauncher" class="com.scb.smartbatch.core.BatchLauncher">
        <property name="jobRepository" ref="jobRepository" />
    </bean>

    <!-- To store Batch details -->
    <bean id="jobRegistry" class="com.scb.smartbatch.repository.SmartBatchRegistry" />

    <bean id="jobRegistryBeanPostProcessor"
        class="org.springframework.batch.core.configuration.support.JobRegistryBeanPostProcessor">
        <property name="jobRegistry" ref="jobRegistry" />
    </bean>

    <!--Runtime cache of batch executions -->
    <bean id="cache" class="com.scb.cache.TCRuntimeCache" />
4

2 に答える 2

1

貴重なご意見をありがとうございます。

しかし'&amp;'、以前はジョブ リポジトリ リファレンスを使用していたため、ジョブ エクスプローラーで共有リソースとして使用することができました。

問題が解決しました。

称賛。

于 2013-10-16T09:50:16.710 に答える
0

通常、実装ではなくインターフェイスを配線する必要があります。
それ以外の場合は、おそらく、<aop:config proxy-target-class="true">標準の Java ベースのプロキシの代わりに CGLIB ベースのプロキシを作成するために追加する必要があります。それについてSpringの公式ドキュメント
を読む

于 2013-10-15T11:49:36.173 に答える