我有 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并提供entityManager和jdbcTemplate 与它一起。
我应该选择其他解决方案吗?或者说这个想法很合适吗?
最佳答案
这是因为重要性。 @Configuration
的优先级高于 application.properties。首先 spring-boot 搜索 @Bean
定义,如果没有找到,则检查 application.properties。一般来说,这些定义是等效的。
关于java - Spring Boot应用程序中JPAentityManager如何选择连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54890379/