2011-12-26 12 views
5

estoy recibiendo este errorNo se pudo Autowire método

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

Ésta es la configuración XML de mi primavera.

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

Aquí está mi código donde estoy Autowiring en esta clase de Java

private InfoModel infoModel; 

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

me estoy perdiendo algo. Sospecho que debo hacer un Interface de InfoModel para que se 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

¿Se puede publicar la clase InfoModel? Supongo que es una clase concreta. –

+2

podría publicar un poco más de información acerca de la pila de excepciones –

+0

La clase InfoModel solo inicializa algunos valores en ella. –

Respuesta

11

si lo hace @Autowired que no es necesario marcarlo como característica en XML. acaba de declarar InfoModel como frijol en XML y eliminar property de XML para usted frijol, donde se ha inyectado InfoModel

Resumiendo

Se necesita una definición de frijol en el XML para InfoModel

Necesita eliminar property de XML

Asegúrese de haber hecho su contexto anotación impulsada por la adición de

<context:annotation-config /> 
+0

Si usa anotaciones, podría simplemente poner '@ Component' en el nivel de tipo de' InfoModel' en lugar de poner el XML.Aunque es muy similar. –

0

Creo que debería escribir @Autowired privada antes de la Información .... Declaración. y eliminar la entrada del xml como lo menciona jigar.

+0

Poner la anotación '@ Autowired' en un campo o en un método de acceso es el mismo. –

0

Quizás quiso Anotar correctamente su clase InfoModel con una anotación Nivel Tipo tales @Component, @Service, o @Repository. Todos ellos son muy similares. Si su InfoModel no está anotado correctamente, recibirá este famoso error "No matching bean ...". Trate de anotar su clase InfoModel con @Component a tener este aspecto:

@Component 
public class InfoModel { 
    // code 
} 
1

Si el seguimiento de la pila dice que no hay granos coincidentes de dicho tipo, entonces eso es lo malo.

Agregue el bean InfoModel al contexto de la aplicación de primavera, p. Ej. al declarar el bean en la misma configuración xml:

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

btw. no debe escribir en mayúscula la primera letra del identificador de frijol, siga la misma convención de nomenclatura que para las variables, es decir. lowerCamelCase. El autocableado y la inyección explícita de la dependencia también es redundante.

Cuestiones relacionadas