Frühling - Seltsame Fehler in Bohnen-Erstellung
Jede Idee, warum bin ich immer diese exception?
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myService' defined in class path resource [context.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [$Proxy54 implementing org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised,net.sf.cglib.proxy.Factory,org.springframework.beans.factory.InitializingBean] to required type [com.mycompany.service.dao.MyDAO] for property 'myDAO'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy54 implementing org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised,net.sf.cglib.proxy.Factory,org.springframework.beans.factory.InitializingBean] to required type [com.mycompany.service.dao.MyDAO] for property 'myDAO': no matching editors or conversion strategy found
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:671)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:610)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:499)
... 36 more
Caused by: java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy54 implementing org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised,net.sf.cglib.proxy.Factory,org.springframework.beans.factory.InitializingBean] to required type [com.mycompany.service.dao.MyDAO] for property 'myDAO': no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:231)
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:138)
at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:386)
... 62 more
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, dass, wenn
ProdMiscDAO
wurde eine Schnittstelle (ist es?) Sie würde nicht dieser Fehler. Ich glaube, Sie haben wahrscheinlich eine Klasse, die erste Proxy mithilfe von cglib unter der Haube, zaubern, etc. und am Ende ist es nicht sicher Stimmen, um einen Parameter in einem setter oder Konstruktor. Versuchen Sie die Programmierung einer Schnittstelle und sehen, ob der Fehler Weg geht.Update:
ProdMiscDAO
ist kein interface. Es ist eine Klasse, die Sie erweitertSqlMappedClientDaoSupport
.Gegeben, ich empfehlen Sie versuchen, diese:
ProdMiscDAO
zuSqlMappedProdMiscDAO
.SqlMappedProdMiscDAO
namensProdMiscDAO
(z.B. "class SqlMappedProdMiscDAO implements ProdMiscDAO
")SqlMappedProdMiscDAO
ändern und es zu verwendenProdMiscDAO
.SqlMappedProdMiscDAO
, Verdrahtung es alle Klassen, die es brauchen.Dies ermöglicht die DAO-Implementierung noch erweitern
SqlMappedClientDaoSupport
aber auch über eine Schnittstelle verfügen. Nach dem Umschalten alle Klassen, die die Schnittstelle anstelle der Klasse, wird der Frühling nicht verwenden, cglib, um Ihre proxy-DAO und der Fehler sollte Weg gehen.Frühjahr Proxys verwendet, zur Laufzeit generiert aus interfaces, um Dinge wie Transaktionen, Aspekte usw. Der richtige Frühling idiom für Objekte wie DAOs, Dienstleistungen, etc. zu beginnen ist mit einer Schnittstelle und erstellen eine konkrete Umsetzung. Sobald Sie das haben, sind Sie frei, um zu generieren proxies aus der Schnittstelle, wie gebraucht.
Also, natürlich, Sie haben eine konkrete DAO-Implementierung, und das ist kostenlos zu verlängern SqlMapClientDaoSupport, wenn Sie es wünschen, aber auch das erstellen einer Schnittstelle, die Ihre Methoden.
Sicher sein, dass Sie wirklich brauchen, um zu erweitern SqlMapClientDaoSupport. Könnte es sein, dass die Komposition und delegation ist ein besserer Weg zu gehen.