Java @Bean不适用于字段

Java @Bean不适用于字段,java,spring,spring-mvc,intellij-idea,Java,Spring,Spring Mvc,Intellij Idea,我正在学习Spring,做MKYong的教程,我被困在Spring DI- 试图将其更改为Java配置,但@Bean注释给出了错误,如主题顶部所示 IOutputGenerator.java: public Interface IOutputGenerator{ public void generateOutput(); } public class CsvOutputGenerator.java implements IOutputGenerator{ public void

我正在学习Spring,做MKYong的教程,我被困在Spring DI-

试图将其更改为Java配置,但@Bean注释给出了错误,如主题顶部所示

IOutputGenerator.java:

public Interface IOutputGenerator{
    public void generateOutput();
}
public class CsvOutputGenerator.java implements IOutputGenerator{
    public void generateOutput(){
        System.out.println("CSV Output gen");
    }
}
CsvOutputGenerator.java:

public Interface IOutputGenerator{
    public void generateOutput();
}
public class CsvOutputGenerator.java implements IOutputGenerator{
    public void generateOutput(){
        System.out.println("CSV Output gen");
    }
}
AppConfig.java:

@Configuration
public class AppConfig{
    @Bean
    public CsvOutputGenerator csvOutputGenerator;
}
IntelliJ将这个“@Bean”注释突出显示为错误消息:@Bean不适用于字段


有人吗?

您不能声明为
Bean
字段

相反,您应该有如下内容:

@Bean
public CsvOutputGenerator csvOutputGenerator() {
    return new CsvOutputGenerator();
}
这是对应于:

<bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator" />


事实上,一个实例化的Java对象应该声明为Bean,然后该对象将可用于其他Bean中的Autowire。

您不能声明为
Bean
字段

相反,您应该有如下内容:

@Bean
public CsvOutputGenerator csvOutputGenerator() {
    return new CsvOutputGenerator();
}
这是对应于:

<bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator" />


事实上,一个实例化的Java对象应该声明为Bean,然后这个对象就可以在其他Bean中用于Autowire。

非常感谢你的帮助,我现在看到了。非常感谢你的帮助,我现在看到了。建议:不要使用这些不可靠和过时的资源来学习Spring,官方文件经过完善和更新。除了“枯燥”但详尽无遗之外,如果你想直接付诸行动,它们还有烹饪书的风格。建议:不要使用这些不可靠和过时的资料来学习Spring,官方文件经过了完善和更新。除了“干巴巴的”,但详尽的,他们有食谱风格,如果你想直接投入行动。