【问题标题】:Spring Boot - Autowiring a DataSource BeanSpring Boot - 自动装配数据源 Bean
【发布时间】:2016-05-31 16:19:41
【问题描述】:

我有一个基本的 Spring Boot 应用程序,注释如下:

@SpringBootApplication
public class ApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApiApplication.class, args);
    }
}

我的application.properties 文件中有以下条目:

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/db
spring.datasource.username=dbuser
spring.datasource.password=dbpassword

据我了解,Spring Boot 应该能够从这些属性中自动自动装配 DataSource Bean。

但是,如果我尝试:

@Autowired
DataSource dataSource;

在我的应用程序中的任何地方(f.i. 在 @Configuration 文件中),我在 IntelliJ 中收到以下错误:

“无法自动装配。找不到 'DataSource' 类型的 bean。”

有什么明显的东西我错过了这个工作吗?

我有一个数据源。

【问题讨论】:

  • @EnableAutoConfiguration 也应该添加到主类之上。
  • @SpringBootApplication 据说还添加了@EnableAutoConfiguration。我尝试手动添加它,但没有解决错误。
  • 如果是这种情况,请为 Spring Boot 启用调试级别日志并检查 DataSource bean 发生了什么。
  • IntelliJ 具有出色的 Spring 支持,但并不总是最新的。例如,我上次检查它仍然无法识别未注释的 Spring Data 存储库。它们过去需要注释,但是如果它们扩展了适当的接口,则不再需要注释。

标签: spring spring-boot autowired


【解决方案1】:

这个 bean 实际上确实被正确初始化了。这可能只是一个 IntelliJ 工具提示错误。

添加@SuppressWarnings 来隐藏消息将不会出现其他问题。

【讨论】:

  • 没错,只是遇到了同样的问题——即使在 2017 年 5 月 12 日构建的 IntelliJ IDEA 2017.1.3 Build #IU-171.4424.56 中仍然存在。即使 IntelliJ 警告冲突,bean 也正确连接
【解决方案2】:

Intelij 显然即使在 2016.2 中仍然不支持 @SpringBootApplication 注解。您要么必须删除 @SpringBootApplication 注释并将其替换为 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 注释,要么忽略错误。

【讨论】:

    猜你喜欢
    • 2013-07-23
    • 2017-06-08
    • 2017-06-04
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多