java - Spring Boot应用程序中JPAentityManager如何选择连接池?

标签 java spring database jpa spring-data-jpa

我有 2 个 DAO - 第一个与 @Bean 一起使用 DataSource + JDBC配置如下:

@Bean("dataSource")
    @Singleton
    public DataSource getDataSource() {
        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setDriverClassName("...");
        basicDataSource.setUrl("...");
        basicDataSource.setUsername(...);
        basicDataSource.setPassword(...);
        ...
        return basicDataSource;
    }

第二个entityManager一起使用。 application.properties 配置如下:

spring.datasource.url=...
spring.datasource.username=...
spring.datasource.password=...
...

当我启动我的Spring Boot应用程序并且spring初始化我的bean时,我使用第二个 DAO来从数据库获取一些信息。

在本例中,我使用第二个 DAO -> entityManager

我希望entityManager使用application.properties中的配置
事实上,entityManager 使用来自 bean DataSource配置

它是如何工作的?
p.s. application.properties 中的数据库属性看起来像是已使用的。

实际上我认为我应该为我的应用程序使用一个ConnectionPool
我可以将DataSource配置为@Bean并提供entityManagerjdbcTemplate 与它一起。
我应该选择其他解决方案吗?或者说这个想法很合适吗?

最佳答案

这是因为重要性。 @Configuration 的优先级高于 application.properties。首先 spring-boot 搜索 @Bean 定义,如果没有找到,则检查 application.properties。一般来说,这些定义是等效的。

关于java - Spring Boot应用程序中JPAentityManager如何选择连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54890379/

相关文章:

spring - 我如何在我的 liferay portlet 中使用 spring jar 而不是 ROOT\WEB-INF\lib 中的 spring jar?

Java Spring MVC 执行命令?

ios - 用于实时查询/推送通知的数据库

database - 甲骨文 express : Getting ORA-12154 error when trying to connect using SQL Plus

mysql - 在 MySQL 中,SUBSTRING(1, 200) 是否比获取 TEXT 列的完整值更好?

java - org.apache.axis2.AxisFault : Mapping qname not fond for the package: org. hibernate.collection

java - Zookeeper 防止 WebLogic 完全关闭

java - 我可以在 INSERT Batch 之后使用 LAST_INSERT_ID() 进行 SELECT 而不用担心吗?

java - Spring数据剩余验证+异常映射器: confusing