Java 如何在Spring中使用@PropertySource加载不同的xml文件

Java 如何在Spring中使用@PropertySource加载不同的xml文件,java,oracle,spring-boot,annotations,azure-sql-database,Java,Oracle,Spring Boot,Annotations,Azure Sql Database,我希望在运行时使用配置文件(helm或.property)加载不同的查询xml文件。我想要实现的是在加载Oracle数据库时加载1.xml,在加载Azure SQL时加载2.xml 这些数据库(Oracle/Azure SQL)是可交换加载的,这意味着我要在配置中定义要加载的数据库,如下所示: datasource.project.driverClassName='Oracle' //or 'SQLServerDriver' datasource.project.url='OracleUrl'

我希望在运行时使用配置文件(helm或.property)加载不同的查询xml文件。我想要实现的是在加载Oracle数据库时加载1.xml,在加载Azure SQL时加载2.xml

这些数据库(Oracle/Azure SQL)是可交换加载的,这意味着我要在配置中定义要加载的数据库,如下所示:

datasource.project.driverClassName='Oracle' //or 'SQLServerDriver'
datasource.project.url='OracleUrl' // or 'SQLUrl'
@PropertySource("classpath:event-sql-${dbtype}.xml")
我想添加类似于
datasource.project.dia方言='Oracle'
之类的标志,这样我就可以指示我正在加载哪个数据库

完成后,我希望我的存储库类加载包含不同sql查询的不同xml文件。但我不确定如何在@PropertySource注释中定义它。下面是一个例子:

@Configuration
@Import(DataSourceConfig.class)
@PropertySource("classpath:event-sql-oracle.xml") //HOW DO I LOAD XML DYNAMICALLY USING THE FLAG?

所以,如果标志上写着“Oracle”,我想加载“classpath:event-sqloracle.xml”,如果标志上写着“Azure-sql”,我想加载“classpath:event-sqlazure.xml”。这是可以实现的吗?

我找到了答案。我只需要对
@PropertySource
使用占位符,如下所示:

datasource.project.driverClassName='Oracle' //or 'SQLServerDriver'
datasource.project.url='OracleUrl' // or 'SQLUrl'
@PropertySource("classpath:event-sql-${dbtype}.xml")

然后在配置中定义
dbtype
,比如.properties或helm。

这有帮助吗?我不这么认为。我找到了一些源代码,我想我需要知道的是如何在@PropertySource中使用占位符。。