sping - Spring注入,在XML配置中引用JavaConfig,结果找不到Config中的bean
问题描述
XML:
<?xml version='1.0' encoding='UTF-8'?><beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd'> <!--<bean />--> <!--引入JavaConfing配置类--> <bean /> <!--xml配置--> <bean class='com.soundsystem.CDPlayer'><constructor-arg ref='sgtPeppers'/> </bean></beans>
sgtPeppers的bean配置在JavaConfig中:
package com.soundsystem;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class CDConfig { @Bean public CompactDisc sgtPeppers(){return new SgtPeppers(); }}
执行后报错:警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ’cdPlayer’ defined in class path resource [META-INF/spring/cdplayer-config.xml]: Cannot resolve reference to bean ’sgtPeppers’ while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ’sgtPeppers’ availableException in thread 'main' org.springframework.beans.factory.BeanCreationException: Error creating bean with name ’cdPlayer’ defined in class path resource [META-INF/spring/cdplayer-config.xml]: Cannot resolve reference to bean ’sgtPeppers’ while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ’sgtPeppers’ available
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ’sgtPeppers’ available
IDEA显示是绿色的,但是为什么找不到
问题解答
回答1:<bean class='com.soundsystem.CDPlayer'> <constructor-arg ref='sgtPeppers'/></bean>意思是创建cdPlayer这个Bean的时候給CDPlayer的构造函数一个sgtPeppers对象