我在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参数,以便其映像可以运行而不会出现任何此类故障?
在此处添加了这些属性,但仍未设置。