@Bean 不适用于字段

Bar*_*ado 1 java spring spring-mvc intellij-idea

我正在学习 Spring,正在做 MKYong 的教程,但我被困在 Spring DI - http://www.mkyong.com/spring/spring-di-via-setter-method/

试图将其更改为 Java 配置,但 @Bean 注释给了我主题顶部的错误。

IOutputGenerator.java:

public Interface IOutputGenerator{
    public void generateOutput();
}
Run Code Online (Sandbox Code Playgroud)

CsvOutputGenerator.java:

public class CsvOutputGenerator.java implements IOutputGenerator{
    public void generateOutput(){
        System.out.println("CSV Output gen");
    }
}
Run Code Online (Sandbox Code Playgroud)

AppConfig.java:

@Configuration
public class AppConfig{
    @Bean
    public CsvOutputGenerator csvOutputGenerator;
}
Run Code Online (Sandbox Code Playgroud)

IntelliJ 将这个“@Bean”注释突出显示为错误的消息:@Bean 不适用于字段。

任何人?

lza*_*tos 5

您不能声明为Bean字段。

相反,你应该有类似的东西:

@Bean
public CsvOutputGenerator csvOutputGenerator() {
    return new CsvOutputGenerator();
}
Run Code Online (Sandbox Code Playgroud)

这对应于:

<bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator" />
Run Code Online (Sandbox Code Playgroud)

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