2011-12-26 15 views
5

sto ottenendo questo erroreImpossibile autowire metodo

org.springframework.beans.factory.BeanCreationException: 
Could not autowire method: 

Questa è la configurazione XML di mia primavera.

<bean ...> 
... 
    <property name="InfoModel" ref="InfoModel"></property> 
</bean> 

Ecco il mio codice dove sono autowiring questo in classe Java

private InfoModel infoModel; 

    @Autowired 
    public void setInfoModel(InfoModel infoModel) { 
    this.infoModel= infoModel; 
    } 

mi manca qualcosa. Ho il sospetto che dovrei creare un Interface di InfoModel per renderlo autowire?

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.model.InfoModel] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:920) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:547) 
+1

Puoi pubblicare la classe InfoModel? Suppongo sia una lezione concreta. –

+2

potresti inserire un po 'più di informazioni sulla traccia dello stack delle eccezioni –

+0

La classe InfoModel inizializza solo alcuni valori al suo interno. –

risposta

11

se lo fai @Autowired non è necessario contrassegnare come proprietà in XML. basta dichiarare InfoModel come fagioli in XML e rimuovere property da XML per voi di fagioli in cui è stato iniettato InfoModel

Riassumendo

È bisogno di una definizione di fagioli in XML per InfoModel

Devi rimuovere property da XML

Assicurati di aver creato il tuo contesto annotazione basata sull'aggiunta di

<context:annotation-config /> 
+0

Se sta usando le annotazioni, potrebbe semplicemente mettere '@ Componente' nel livello di tipo di 'InfoModel' invece di inserire l'XML.Anche se è molto simile. –

0

Penso che dovresti scrivere @Autowired prima delle Informazioni private .... Dichiarazione. e rimuovi la voce dall'xml come menzionato da jigar.

+0

L'inserimento dell'annotazione '@ Autowired' in un campo o in un metodo di accesso è la stessa. –

0

Hai annotare correttamente la classe InfoModel con un tipo di annotazione livello tale @Component, @Service o @Repository. Tutti loro sono molto simili. Se il tuo InfoModel non è correttamente annotato, riceverai questo famoso errore "Nessun bean corrispondente ...". Prova annotare la classe InfoModel con @Component a guardare come questo:

@Component 
public class InfoModel { 
    // code 
} 
1

Se l'analisi dello stack dice che non ci sono i fagioli di corrispondenza di detto tipo, allora questo è quello sbagliato.

Aggiungere il bean di InfoModel al contesto dell'applicazione Spring, ad es. dichiarando il bean nella stessa configurazione xml:

<bean id="InfoModel" class="com.model.InfoModel" /> 

btw. non si dovrebbe mai utilizzare la prima lettera dell'identificativo del bean, seguire la stessa convenzione di denominazione delle variabili, es. lowerCamelCase. Anche la creazione automatica e l'iniezione esplicita della dipendenza sono ridondanti.

Problemi correlati