【问题标题】:@Bean not applicable to field@Bean 不适用于字段
【发布时间】:2017-12-03 17:47:25
【问题描述】:

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

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

IOutputGenerator.java:

public Interface IOutputGenerator{
    public void generateOutput();
}

CsvOutputGenerator.java:

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 不适用于字段。

有人吗?

【问题讨论】:

  • 忠告:不要使用这种不可靠和过时的资源来学习 Spring,官方文档已经完美更新。除了“枯燥”但详尽的reference documentation,如果您想直接采取行动,他们还有食谱风格的guides

标签: java spring spring-mvc intellij-idea


【解决方案1】:

您不能将字段声明为Bean

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

@Bean
public CsvOutputGenerator csvOutputGenerator() {
    return new CsvOutputGenerator();
}

对应于:

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

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

【讨论】:

  • 非常感谢您的帮助,我现在看到了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
相关资源
最近更新 更多