无法自动装配。存在多个“DataSource”类型的 bean

2024-01-23

我正在尝试通过以下方式自动连接数据库

@Autowired
private DataSource dataSource;

我的数据源中有一个application.yml

spring:
  profiles:
    active: dev

---
spring:
  profiles: dev
  datasource:
    driverClassName: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://localhost:3306/dbname
    username: user
    password: password

name: dev

logging:
  level:
    org.springframework: INFO


---

spring:
  profiles: prod
name: prod

logging:
  level:
    org.springframework: INFO

但我收到一条错误消息说。

Could not autowire. There is more than one bean of 'DataSource' type.

Beans:dataSource (DataSourceConfiguration.class)
      dataSource (DataSourceConfiguration.class)

我觉得这很奇怪,因为我只定义了一个数据源application.yml据我所知,我没有定义任何其他数据源。

我尝试了配置,但仍然遇到同样的问题。

@Configuration
@EnableConfigurationProperties
public class AppConfig {

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

这是我的“pom”文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>id.group</groupId>
    <artifactId>ProjectName</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>


    <dependencies>
        <!--Spring Boot dependencies-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
        <!--Spring Boot dependencies-->
        <!--Spring Security dependencies-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <!--Spring Security dependencies-->
        <!--JWT dependencies-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.7.0</version>
        </dependency>
        <!--JWT dependencies-->
        <!--Actuator and HAL browser dependencies-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-rest-hal-browser</artifactId>
        </dependency>
        <!--Actuator and HAL browser dependencies-->
        <!--Database dependencies-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mariadb.jdbc</groupId>
            <artifactId>mariadb-java-client</artifactId>
            <version>1.5.7</version>
        </dependency>
        <!--Database dependencies-->

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

我正在使用 Spring Boot 1.5.2 和 IntelliJ 2017.1


试试这个,它对我有用,像这样使用@Primary

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

    @Bean(name = "prodJdbc")
    public JdbcTemplate prodJdbcTemplate(@Qualifier("prodDataSource") DataSource prodDataSource){ 
        return new JdbcTemplate(prodJdbcTemplate);
    }

    @Bean(name = "devDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.dev")
    public DataSource devDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "devJdbc")
    public JdbcTemplate devJdbcTemplate(@Qualifier("devDataSource") DataSource devDataSource) {
        return new JdbcTemplate(devDataSource);
    }

然后像这样使用@autowire

@Autowired
@Qualifier("prodJdbc")
private JdbcTemplate prodJdbcTemplate;

我希望这可以帮助您或其他人:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法自动装配。存在多个“DataSource”类型的 bean 的相关文章

随机推荐

  • 如何更新 make 3.81 linux

    我是 Linux 新手 昨天安装的新手 我在大学的编程课程中需要它 并且我被告知要安装特定程序的特定版本 但尽管我已经使用 apt get install 来安装他们 之前已经完成了 apt get update 他们的版本不正确 我需要的
  • .toArray(new MyClass[0]) 或 .toArray(new MyClass[myList.size()])?

    假设我有一个 ArrayList ArrayList
  • 使用 dll 导出类时 __declspec(dllimport) 未解析的外部符号

    我想基于 dll 导出类定义一个派生类 基类在项目 A 中定义 派生类在项目 B 中定义 首先 在项目A中 定义了预处理器MYDLL BUILD 我使用头文件来指定导出 导入 if defined MYDLL BUILD pragma co
  • 从字符串中删除图像元素

    我有一个包含存储在 var 中的 HTML 图像元素的字符串 我想从字符串中删除图像元素 我努力了 var content content replace
  • 无法通过 IP 从网络访问 WAMP 站点

    我正在运行最新版本的 wampserver 和 apache 2 4 2 和 php 5 4 3 在 Windows 2008 上 我正在运行两个 ip 一个用于 iis 一个用于 apache 我通过添加来做到这一点 听 123 456
  • 使用 Javascript 跨浏览器以编程方式添加书签链接

    有没有一个脚本可以解决这个问题 我希望能够说 单击 另存为书签 我搜索了一下并发现this one http www dynamicdrive com dynamicindex9 addbook htm 但它不适用于 Safari 有人有
  • maven更新后java版本自动更改为java 1.5

    我使用 eclipse 作为 IDE 当我右键单击该项目 然后单击 maven 时 将我的 java 版本更改为 1 5 这是我到目前为止所做的 我遵循了此处列出的所有步骤 http qussay com 2013 09 13 solvin
  • 使用 DrawingContext 绘制“L”

    我需要绘制 使用System Windows Media DrawingContext a L 在 WPF 中 最佳的继续方式是什么 画2条线 画一个PolyLineSegment 不知道如何 drawContext DrawLine my
  • 如何在 Ruby 正则表达式中使用 AND

    我在使用 Ruby 正则表达式时遇到问题 如何在 ruby 中执行 AND 正则表达式 ex cat and dog cat dog I just want to match cat and dog 您可以使用积极的前瞻来执行类似 AND
  • 将日志发送到 Crashlytics 而不会导致应用程序崩溃

    如何让 Crashlytics 接收日志而不让我的应用程序崩溃 我有以下代码 if context managedObjectContext save error CLS LOG error description 发生错误时 我希望 Cr
  • Jsoup 遇到特殊 HTML 符号问题,‘ — 等

    我有一些 HTML 字符串 我通过 Jsoup 放置这些内容 这样我就可以向所有 href 和 src 属性添加一些内容 效果很好 然而 我注意到对于一些特殊的 HTML 字符 Jsoup 正在将它们从 ldquo 到实际角色 我输出之前和
  • 在线程之间同步/发送数据

    该应用程序是用 Delphi XE 编写的 我有两个类 TBoss 和 TWorker 它们都基于 Thread TBoss是一个单实例线程 它启动后会创建大约20个TWorker线程 当 Boss 创建 TWorker 实例时 它会为其分
  • 在 PHP 中解析时需要在 JSON feed 中保留反斜杠

    以下是我们的 JSON 源之一的示例 wiggins id bkstir 04380 wdr q alertcolour yellow infohvr infoclk warning 10 warnhvr There are 10 file
  • 学习使用线程来防止数据竞争情况

    以下代码应该通过在公共端使用同步方法来防止数据争用 但由于某种原因 输出始终是 19915 19980 如果不是数据竞赛的话不应该是20000吗 public class SyncVarDataRace extends Thread pri
  • 在调试和生产模式之间切换

    开发时调试应用程序的一种快速方法是编写如下语句 print data 有没有办法在切换到生产模式时停止打印 这样就不会影响应用程序的性能 例如 布尔值作为开关 您可以使用debugPrint代替print仅用于开发日志记录 debugPri
  • inverse_of 在 mongoid 中意味着什么?

    What inverse of是什么意思 通过使用它而不是没有它的关联我能得到什么 在简单关系中 两个模型只能以一种方式关联 并且关系的名称自动是与其相关的模型的名称 这在大多数情况下都很好 但并不总是足够 inverse of允许您指定您
  • 如何修改主机头

    我正在尝试开发一个 chrome 扩展 它可以根据某些请求设置 主机 标头 但对于是否可以修改 host 标头 文档是矛盾的 这两个问题都表明a 这不应该是可能的 b 这是不可能的https code google com p chromi
  • 文本链接不会在 Safari 中使用名称通过 JavaScript 提交表单

    我正在使用 Safari 5 0 3 我的 html 中有一个表单
  • 这第二个新的是什么?

    第二行是什么 在回答另一个问题时看到的 int x new int 1 int y new x int 第二行之后 x 和 y 具有相同的值 指向相同的位置 y x 和第二行有什么区别 它像构造函数还是什么 It s 安置新 http en
  • 无法自动装配。存在多个“DataSource”类型的 bean

    我正在尝试通过以下方式自动连接数据库 Autowired private DataSource dataSource 我的数据源中有一个application yml spring profiles active dev spring pr