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

定义两个数据源的Spring Boot

冯敏达
2023-03-14

我有一个Java4和Spring Boot2.4.0快照html" target="_blank">应用程序。

# pims datasource
spring.datasource1.driver-class-name=org.postgresql.Driver
spring.datasource1.url=jdbc:postgresql://localhost:5432/pims
spring.datasource1.username=postgres
spring.datasource1.password=
spring.jpa.database-platform=postgres
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.show-sql=false
# approval datasource
spring.datasource2.driver-class-name=org.postgresql.Driver
spring.datasource2.url=jdbc:postgresql://localhost:5432/approval
spring.datasource2.username=postgres
spring.datasource2.password=
@Configuration
@ComponentScan(basePackages = "com.nexct")
public class MultipleDBConfig {

    @Bean(name = "datasource1")
    @ConfigurationProperties("spring.datasource1")
    @Primary
    public DataSource dataSource1(){
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "datasource2")
    @ConfigurationProperties("spring.datasource2")
    public DataSource dataSource2(){
        return DataSourceBuilder.create().build();
    }
}

然后在DAO中定义JDBCTemplate。

CompanyContactDAOIMPL.java

@Repository
public class CompanyContactDAOImpl implements CompanyContactDAO {

    @Autowired
    @Qualifier("datasource1") // pims datasource
    private JdbcTemplate jdbcTemplate;

ApprovalRequestDAOImpl.java

@Repository
public class ApprovalRequestDAOImpl implements ApprovalRequestDAO {

    @Autowired
    @Qualifier("datasource2") // approval datasource
    private JdbcTemplate jdbcTemplate;

unsatisfiedDependencyException:创建名为“Approval RequestDaoImpl”的bean时出错:通过字段“JDBC Template”表示的不满足依赖项;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“org.springframework.jdbc.core.jdbcTemplate”类型的合格bean可用:至少需要一个合格的自动候选bean。依赖项注释:{@org.springframework.beans.factory.annotation.AutoWired(required=true),@org.springframework.beans.factory.annotation.qualifier(“DataSource2”)}由:org.springframework.beans.factory.noSuchBeanDefinitionException:没有“org.springframework.jdbc.core.jdbcTemplate”类型的合格bean可用:应至少有一个合格的自动连接候选bean。依赖项批注:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true),@org.SpringFramework.Beans.Factory.Annotation.Qualifier(“DataSource2”)}

共有1个答案

国晟睿
2023-03-14

堆栈跟踪与其他内容相关。您的JdbcTemplates需要一个数据源,它们本身并不是数据源。创建一个JdbcTemplate并注入数据源,而不是在JdbcTemplates上设置限定符,例如:

@Repository
public class ApprovalRequestDAOImpl implements ApprovalRequestDAO {

    private JdbcTemplate jdbcTemplate;

    public ApprovalRequestDAOImple(@Qualifier("datasource2") DataSource ds) {
        this.jdbcTemplate = new JdbcTemplate(ds);
    }
}

此处提供更多信息

 类似资料:
  • 我在Spring Boot中有两个MySQL数据源,因此我有两个配置类。但它似乎只使用主数据源。所有实体都是为主数据源创建的,因此crawlerdb和userdb实体都是在userdb中创建的。 我的userdb主配置: 我的辅助爬网数据库配置: 两个架构的实体类位于不同的包中,如类名上方的EntityScan所示。但当我检查MySQL workbench中创建的模式时,我看到所有实体都是在use

  • 问题内容: 我的GUI中有多个组合框,所有组合框都需要数据。此数据将随机更改,因此需要一种快速的方法来保持所有值同步。我遇到了DefaultComboBoxModel,它实际上非常合适。唯一的事情是,我需要组合框彼此独立- 意思是:如果我在一个上选择一个值,则所有其他框都不应更改。我做了一些研究,并阅读了标准的Java教程,但没有一个告诉我如何使用DefaultComboBoxModel来实现这一

  • 我查看了博客帖子、教程、人们的知识库,但没有任何帮助。以下是我所拥有的: 有两个带有MySQL数据库的Docker容器:和。两个容器都已启动,数据库可见,我可以查询表。 我想在我的项目中有两个数据源:一个用于电子书,另一个用于Spring Security表。 我编写了一个简单的,其中我只是自动连接两个存储库并检查它们的大小。 运行应用程序时,我得到: 但是,如果我在没有第二个数据源并使用常规Sp

  • 我希望能够在应用程序启动后动态更改数据源。

  • 我尝试在spring boot中使用两个DataSource,并按照教程配置:http://docs.spring.io/spring-boot/docs/1.3.1.release/reference/htmlsingle/#howto-two-dataSources 然后创建2个实体和2个存储库

  • 问题内容: 我们的应用程序当前使用的数据源是在JBoss standalone.xml中定义的,基本上我们需要在应用程序而不是容器中定义它。我们当前的设置是; application-context.xml; persistance.xml: datasource.xml: 基本上我想要的只是生产线 从datasource.xml读取而不是转到容器(JBoss)。看起来似乎很简单,但是在阅读了一些