当前位置: 首页 > 知识库问答 >
问题:

SpringBoot数据源自动配置不起作用

郑理
2023-03-14

我有一个简单的SpringBoot应用程序,我想使用AutoConfiguration来配置Tomcat jdbc池数据源。

我正在使用这些Spring依赖项:

// Spring Boot
compile 'org.springframework.boot:spring-boot-starter-web:1.3.5.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-jdbc:1.3.5.RELEASE'

以下是我的 application.yml 文件中的数据源属性:

spring:
    datasource:
        url: jdbc:mysql://my.host/mydb
        username: user
        password: pwd
        driver-class-name: com.mysql.jdbc.Driver
        initialSize: 5

我确定正在加载属性,因为应用程序正在获取其他值。

我在配置文件中将 bean 定义为:

@Bean(name="myDataSource")
@ConfigurationProperties(prefix="spring.datasource")
public DataSource getDataSource() {
    DataSource dataSource = DataSourceBuilder.create().build()
    return dataSource
}

我将数据源注入到我的DAO中,如下所示:

@Slf4j
@Repository
class MyDAO {

    @Autowired
    DataSource dataSource

    public void getFoo() {
        log.info("DB URL: ${dataSource.getUrl()}")
    }
}

如果我在getDataSource()方法中设置了断点,DataSourceBuilder将创建DataSource的实例。但是,该对象的所有属性(如URL、用户和密码)都为空。此外,当我调用getFoo()时,dataSource变量为空。我尝试在AppConfig中注释掉bean定义。dataSource仍然为空。有什么建议吗?

我浏览了SpringBoot文档和我的Spring书,但我没有看到任何这样的例子。我看到了我自己创建DataSource的示例。但我希望Spring的自动配置能够自动将这些东西结合在一起。

提前感谢您能提供的任何帮助。

共有2个答案

郑翰海
2023-03-14

根据Andy的评论,我发现我有两个问题。首先,我需要将JPA依赖项包含到项目中。我将这一行添加到我的build.gradle文件中:

compile 'org.springframework.boot:spring-boot-starter-data-jpa:1.3.5.RELEASE'

其次,我使用 new() 创建 MyDAO 的实例。我通过创建一个使用 @Autowired 注入 MyDAO 实例的服务类来解决此问题。一旦 DAO 成为 Spring 管理的 bean,它就能够从 Tomcat 连接池中注入数据源的实例。

樊琦
2023-03-14

通过创建自己的bean,您实际上关闭了Boot对DataSource的自动配置。您可以删除您的getDataSource方法,让Boot自动配置一个。

 类似资料:
  • 我的项目使用MySQL、JavaFX、Spring Boot、Spring Data JP和Hibernate框架/技术。 这是我的POM文件。 这是我的。属性配置。 这是我的主课 这是stacktrace: 上下文初始化期间遇到异常-取消刷新尝试:org。springframework。豆。工厂UnsatifiedPendencyException:创建名为“org”的bean时出错。sprin

  • 4.1 根据条件的自动配置 @conditional是基于条件的自动配置,一般配合Condition接口一起使用,只有接口实现类返回true,才装配,否则不装配. 用实现了Condition接口的类传入@Conditional中 @Conditional可以标记在配置类的方法中,也可以标记在配置类上.标记的位置不同,作用域不同. @Conditional可以传入多个实现了condition接口的类

  • 本文向大家介绍springboot + mybatis配置多数据源示例,包括了springboot + mybatis配置多数据源示例的使用技巧和注意事项,需要的朋友参考一下 在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源。 代码结构: 简要原理: 1)DatabaseType列出所有的数据源的key---key 2)DatabaseContextHolder是一个线

  • 本机Spring Boot自动配置(例如one)也可以检测主类中声明的bean(例如注释的方法)。 如何对主类中声明的bean进行正确的bean检测? 编辑

  • 我已经为负载测试创建了jeter脚本,并添加了CSV数据元素来读取300的用户名和密码Users.Also遵循以下步骤; 使用记事本创建CSV文件,并将其存储在创建的脚本存储的目录中 CSV数据集元素中定义的变量和文件路径 将变量用作HTTP请求的参数 增加的线程数 但是效果并不像预期的那样。我该如何解决这个问题?

  • 本文向大家介绍SpringBoot快速配置数据源的方法,包括了SpringBoot快速配置数据源的方法的使用技巧和注意事项,需要的朋友参考一下 SpringBoot如何快速配置数据源;有如下两种方式: 通过spring-boot-starter-jdbc快速配置数据源 自定义数据源DataSource 首先我们需要明确数据源DataSource有什么作用: 通过DataSource可以获取数据库连