1

私は4日間解決しようとしてきたスプリングインジェクションの問題を抱えています。

私の春の設定には次のものがあります:

<bean id="applicationCache" class="domain.ui.ApplicationCacheServiceImpl">
    <property name="divisionSelectOptionsCache" ref="divisionSelectOptionsCache"/>
</bean>

<bean id="divisionSelectOptionsCache" class="domain.jsf.DivisionSelectOptionsCache"></bean>

ApplicationCacheServiceImpl.scala は次のようになります。

class ApplicationCacheServiceImpl extends ApplicationCacheService{
   var divisionSelectOptionsCache: DivisionSelectOptionsCache = _

   def setDivisionSelectOptionsCache(dsoc: DivisionSelectOptionsCache) ={
     divisionSelectOptionsCache = dsoc
   }
 ....

DivisionSelectOptionsCache.scala は次のようになります。

class DivisionSelectOptionsCache extends Converter{
   val options = mutable.Map[String, DivisionSelectOption]()
   var em: EntityManager = _

   // Just left this in case its  relevant. Throws no errors though
   @PersistenceContext
   def setEntityManager(entManager: EntityManager) = {
      em = entManager
   }
   ....

アプリケーションがコンパイルされ、戦争が構築されます。ただし、デプロイすると、次の例外メッセージが表示されます。

INFO: Initializing Spring root WebApplicationContext
Jan 18, 2013 7:56:17 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'applicationCache' defined in class path resource 
applicationPersistence.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: 
Failed to convert property value of type '$Proxy15 implementing javax.faces.convert.Converter,org.springframework.aop.SpringProxy,
org.springframework.aop.framework.Advised' to required type 'com.domain.jsf.DivisionSelectOptionsCache' 
for property 'divisionSelectOptionsCache'; nested exception is java.lang.IllegalStateException: 
Cannot convert value of type [$Proxy15 implementing javax.faces.convert.Converter,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised]
 to required type [com.domain.jsf.DivisionSelectOptionsCache] for property 'divisionSelectOptionsCache': no matching editors or conversion strategy found
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
 .....
Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type '$Proxy15 implementing javax.faces.convert.Converter,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised' to required type 'com.domain.jsf.DivisionSelectOptionsCache' for property 'divisionSelectOptionsCache'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [$Proxy15 implementing javax.faces.convert.Converter,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [com.domain.jsf.DivisionSelectOptionsCache] for property 'divisionSelectOptionsCache': no matching editors or conversion strategy found
  at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:485)
  at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:516)
....
Caused by: java.lang.IllegalStateException: Cannot convert value of type [$Proxy15 implementing javax.faces.convert.Converter,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [com.domain.jsf.DivisionSelectOptionsCache] for property 'divisionSelectOptionsCache': no matching editors or conversion strategy found
  at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:247)
  at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:470)
  ... 31 more

Jan 18, 2013 7:56:20 PM org.apache.catalina.core.StandardContext filterStop
FINE: Stopping filters

したがって 、これに対応するタイプが正しく、Spring config xml ファイルで定義されているように、 ApplicationCacheServiceImplSpring がプロパティに注入するのを探しています。divisionSelectOptionsCacheDivisionSelectOptionsCache

クラスDivisionSelectOptionsCache extends Converterなので、そこに問題はないはずです。

だから私は立ち往生しています。Spring IoC を取り出し、google Guice を使用してデプロイ時間チェック (xml 構成ファイルなし) ではなくコンパイル時間チェックを行うことも試みましたが、管理された jsf Bean を提供するためにアプリケーションが Spring に依存しているため、それは機能しませんでした。

私はそれができないとクライアントに伝えようとしているので、助けてください.

ありがとう

4

2 に答える 2

0

http://java.decompiler.free.fr/にあるような逆コンパイラーを使用して、Scalaコンパイラーが生成しているバイトコードを確認します。それはあなたが思っていることをしていないのかもしれません。

于 2013-01-19T23:04:55.380 に答える