如何解决Spring Boot在以编程方式配置数据源时没有选择spring.datasource.tomcat*?
该文档是关于自动配置的,您没有在使用它。如果您正在编写用于设置的自定义代码DataSource
,则还负责配置的绑定。
您上面的代码有个@ConfigurationPropeties("spring.datasource")
。如果删除该spring.datasource.*
属性,则您自己的代码中不会考虑任何属性。
该部分文档说明了基本属性(spring.datasource
)和数据源绑定(spring.datasource.xyz.*
)之间的区别。
无论如何,如果要创建DataSource
自己(为什么?),请使用单独的名称空间。重用spring.datasource
名称空间非常令人困惑,因为用户期望自动配置提供的功能会得到尊重。由于您正在编写自己的配置,因此不会。
解决方法
我正在配置两个数据源,并尝试设置池属性,并且根据文档,我应该使用spring.datasource.tomcat。*,这似乎不适用于我正在执行的配置。我究竟做错了什么?还是我想念什么?
我的application.properties:
spring.datasource.tomcat.test-on-borrow=true
spring.datasource.tomcat.validationQuery=SELECT 1
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username
spring.datasource.password
spring.read.datasource.tomcat.test-on-borrow=true
spring.read.datasource.tomcat.validationQuery=SELECT 1
spring.read.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.read.datasource.username
spring.read.datasource.password
下面是我的配置类:我有一个类似的读取数据源(用于不同的仓库/实体)
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory",transactionManagerRef = "transactionManager",basePackages = "com.test.feature.repo.internal")
public class DataSourceConfig {
@Primary
@Bean("dataSource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource(){
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name="entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder,@Qualifier("dataSource")DataSource dataSource){
return builder.dataSource(dataSource).packages("com.test.feature.entity.internal").persistenceUnit("defaultPersistenceUnit").build();
}
@Primary
@Bean(name="transactionManager")
public PlatformTransactionManager transactionManager(@Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory){
return new JpaTransactionManager(entityManagerFactory);
}
}
如果我尝试使用spring.datasource.test-on-borrow = true,则可以使用。
我真的想知道为什么.tomcat。*样式不起作用?而我能做些什么呢?
即使有人将我重定向到一些有用的阅读材料以帮助您理解这一点,我也会很高兴。:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。