Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA entityManager如何在Spring引导应用程序中选择连接池?_Java_Spring_Database_Jpa_Spring Data Jpa - Fatal编程技术网

Java JPA entityManager如何在Spring引导应用程序中选择连接池?

Java JPA entityManager如何在Spring引导应用程序中选择连接池?,java,spring,database,jpa,spring-data-jpa,Java,Spring,Database,Jpa,Spring Data Jpa,我有两个DAO,第一个与@Bean数据源一起工作+JDBC配置如下所示: @Bean("dataSource") @Singleton public DataSource getDataSource() { BasicDataSource basicDataSource = new BasicDataSource(); basicDataSource.setDriverClassName("..."); basicDataSourc

我有两个DAO,第一个与@Bean数据源一起工作+JDBC配置如下所示:

@Bean("dataSource")
    @Singleton
    public DataSource getDataSource() {
        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setDriverClassName("...");
        basicDataSource.setUrl("...");
        basicDataSource.setUsername(...);
        basicDataSource.setPassword(...);
        ...
        return basicDataSource;
    }
spring.datasource.url=...
spring.datasource.username=...
spring.datasource.password=...
...
第二个entityManager一起工作。application.properties配置如下:

@Bean("dataSource")
    @Singleton
    public DataSource getDataSource() {
        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setDriverClassName("...");
        basicDataSource.setUrl("...");
        basicDataSource.setUsername(...);
        basicDataSource.setPassword(...);
        ...
        return basicDataSource;
    }
spring.datasource.url=...
spring.datasource.username=...
spring.datasource.password=...
...
当我启动Spring启动应用程序并Spring初始化bean时,我使用第二个DAO从数据库中获取一些信息

在本例中,我使用的是secondDAO->entityManager

我希望entityManager使用来自应用程序.properties的配置
实际上,entityManager使用来自bean数据源的配置

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

实际上,我认为我的应用程序应该使用一个连接池。
我可以将DataSource配置为@Bean,并提供entityManagerjdbcTemplate

我应该选择其他解决方案吗?还是这个想法很合适?

这是因为它的重要性
@Configuration
的优先级高于application.properties。第一次spring引导搜索
@Bean
定义,如果未找到,则检查application.properties。一般来说,这些定义是等价的。

这是因为重要性
@Configuration
的优先级高于application.properties。第一次spring引导搜索
@Bean
定义,如果未找到,则检查application.properties。通常,这些定义是等效的。

JPA
EntityManager
仅使用定义了
EntityManager工厂的
DataSource
(假设向其提供了数据源)。数据源可能是从前面的ConnectionPool定义的,但为什么entityManager选择@Bean中的数据源,而不是application.properties中的数据源?我想它是从application.properties和beans中获取的,否则我不知道为什么application.properties数据库中的属性看起来像是使用过的。一个
EntityManager
来自JPA规范。JPA规范中没有
application.properties
。也许你应该仔细阅读一下。你说的是春天,不是JPA。SPRING定义了数据源及其传递给JPAA的内容JPA
EntityManager
仅使用定义了
EntityManager工厂的
datasource
(假设向其提供了数据源)。数据源可能是从前面的ConnectionPool定义的,但为什么entityManager选择@Bean中的数据源,而不是application.properties中的数据源?我想它是从application.properties和beans中获取的,否则我不知道为什么application.properties数据库中的属性看起来像是使用过的。一个
EntityManager
来自JPA规范。JPA规范中没有
application.properties
。也许你应该仔细阅读一下。你说的是春天,不是JPA。SPRING定义了数据源及其传递给JPA的内容