如何在Spring Boot中设置数据源连接属性

时间:2020-08-05 03:38:43

标签: java spring spring-boot

我在Spring Boot应用程序中有多个数据源,配置如下:

spring:
  application:
    name: myapp
  main:
    allow-bean-definition-overriding: true
  datasource-secondary:
      type: com.zaxxer.hikari.HikariDataSource
      jdbc-url: jdbc:oracle:thin:...
      username: ...
      password: ...
      driver-class-name: oracle.jdbc.OracleDriver
      connection-timeout: 20000
      maximum-pool-size: 10
      pool-name: secondary-pool
  datasource-primary:
      type: com.zaxxer.hikari.HikariDataSource
      jdbc-url:  jdbc:postgresql...
      username:  ...
      password: ...
      driver-class-name: org.postgresql.Driver
      connection-timeout: 20000
      maximum-pool-size: 10
      pool-name: primary-pool

@EnableTransactionManagement
@Configuration
public class DataSourceConfig {

    @Bean
    @ConfigurationProperties("spring.datasource-secondary")
    public DataSource secondaryDatasource() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    @Primary
    @ConfigurationProperties("spring.datasource-primary")
    public DataSource primaryDatasource() {
        return DataSourceBuilder.create().build();
    }

@PostConstruct
    public void setUp() {
        System.setProperty("oracle.jdbc.timezoneAsRegion", "false");
        System.setProperty("oracle.jdbc.fanEnabled", "false");
    }

}

由于我有1个数据源作为oracle,因此需要禁用oracle.jdbc.timezoneAsRegion属性。因此,我尝试使用postconstruct进行设置,但是当我尝试通过docker运行我的应用程序的映像时,此方法不起作用。

我知道我可以通过docker-compose.yaml设置这些vm参数,但是在uat环境中,应用程序不是使用docker运行的,只有图像是通过简单的java命令运行的。

如何在Spring Boot应用程序中设置这些vm参数,以便其映像可以运行而不会出现任何此类故障?

在此处添加了这些属性,但仍未设置。

enter image description here

0 个答案:

没有答案
相关问题