java - @Bean不适用于字段

标签 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();
}

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

有人吗?

最佳答案

您不能将字段声明为 Bean

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

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

对应于:

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

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

关于java - @Bean不适用于字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47621297/

相关文章:

java - 使用数据库jpa中现有和不存在的数据持久保存新数据时出错

java - org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException :

java - 两个应用程序使用相同的 keystore 时,SSL握手异常

java - Rsocket 服务器异常 : No handler for destination '' (destination does not pass from client to server)

java - IntelliJ IDE 禁用 'is never used' 检查

java - 是否有真正的理由将 Java main 放在公共(public)类中?

java - 错误: org. hibernate.PropertyNotFoundException : no appropriate constructor in class: com. a.offering.dto.SellerDetailsDto

spring - @JsonManagedReference 和 @JsonBackReference 无法从 jsonbackreference 模型中获取关系数据

java - Spring MVC 表单使用 modelAttribute 提交

spring-mvc - 如何优雅地处理Spring Security中未由ControllerAdvice处理的异常?