Java 未定义名为的bean异常

Java 未定义名为的bean异常,java,spring,Java,Spring,包com.mkyong.output; IOutputGenerator.java public interface IOutputGenerator { public void generateOutput(); } 包com.mkyong.output; OutputHelper.java @Component public class OutputHelper { @Autowired IOutputGenerator outputGenerator;

包com.mkyong.output; IOutputGenerator.java

public interface IOutputGenerator
{
    public void generateOutput();
}
包com.mkyong.output; OutputHelper.java

@Component
public class OutputHelper {

    @Autowired
    IOutputGenerator outputGenerator;

    public void generateOutput() {
        outputGenerator.generateOutput();
    }

    /*//DI via setter method
    public void setOutputGenerator(IOutputGenerator outputGenerator) {
        this.outputGenerator = outputGenerator;
    }*/
}
包com.mkyong.output.impl

CsvOutputGenerator.java

@Component
public class CsvOutputGenerator implements IOutputGenerator {
    public void generateOutput() {
        System.out.println("This is Csv Output Generator");
    }
}
SpringBeans.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <context:component-scan base-package="com.mkyong" />

</beans>

我在线程“main”org.springframework.beans.factory.NoSuchBeanDefinitionException中得到这个异常:没有定义名为“OutputHelper”的bean


尽管我已经将OutputHelper标记为组件。

您好,我想您还没有在SpringXML配置中添加以下内容

 xmlns:mvc="http://www.springframework.org/schema/mvc"

http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd

<mvc:annotation-driven/>
xmlns:mvc=”http://www.springframework.org/schema/mvc"
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd

您需要查看顶部异常并阅读整行内容。 我猜有一个异常是嵌套异常,就像@Autowired xxxxxx,表示Autowired失败。 我注意到:

@Autowired
IOutputGenerator outputGenerator;

因此,在默认情况下,类名用于@Autowired,您可以重写为

@Autowired
IOutputGenerator csvOutputGenerator;
注意: “csvOutputGenerator”的第一个字母是小写的

我已更改

OutputHelper output = (OutputHelper) context.getBean("OutputHelper");


这很有效。

更简单的选择是在已经在应用程序上下文中注册的bean中启用注释,这意味着您可以只使用
@Autowired
,而不必使用
context.getBean()手动获取所有bean。

只需将这一行添加到SpringBeans.xml中即可


如果你真的想了解你在做什么,阅读会有所帮助。

OutputHelper的包定义是什么??请确保包“com.mkyong”@sidgate-package-updated中的类不是mvc应用程序。是否尝试此更改@自动接线输出发生器CSVOUTPUTGANTOR;我更改了OutputHelper output=(OutputHelper)context.getBean(“OutputHelper”);to OutputHelper output=(OutputHelper)context.getBean(“OutputHelper”);这是因为默认情况下,Spring会将组件的第一个字符小写,所以Outputhelper变成Outputhelper
OutputHelper output = (OutputHelper) context.getBean("OutputHelper");
OutputHelper output = (OutputHelper) context.getBean("outputHelper");