如何解决如何在Spring中使用@PropertySource加载不同的xml文件
我想在运行时使用配置文件(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'
我想添加诸如datasource.project.dialect='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-sql-oracle.xml”,如果显示为“ Azure SQL”,则要加载“ classpath:event-sql-Azure.xml” 。这可以实现吗?
解决方法
我找到了答案。我只需要为@PropertySource
使用占位符,如下所示:
@PropertySource("classpath:event-sql-${dbtype}.xml")
然后在.properties或helm之类的配置中定义dbtype
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。