私は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 ファイルで定義されているように、 ApplicationCacheServiceImpl
Spring がプロパティに注入するのを探しています。divisionSelectOptionsCache
DivisionSelectOptionsCache
クラスDivisionSelectOptionsCache
extends
Converter
なので、そこに問題はないはずです。
だから私は立ち往生しています。Spring IoC を取り出し、google Guice を使用してデプロイ時間チェック (xml 構成ファイルなし) ではなくコンパイル時間チェックを行うことも試みましたが、管理された jsf Bean を提供するためにアプリケーションが Spring に依存しているため、それは機能しませんでした。
私はそれができないとクライアントに伝えようとしているので、助けてください.
ありがとう