私は有線の問題を抱えており、ヒントが見つかりません。Spring PropertySourcesが読み込まれましたが、テストでは適用されませんでした
私はデータベースシャーディングの設定をプロパティファイルで行っています。 私はこれらのプロパティをロードするための責任を持つクラスました。そして、
@Component
@PropertySources(value = *arrayOf(
PropertySource("classpath:/dbconfig/base.properties"),
PropertySource("classpath:/dbconfig/override.properties", ignoreResourceNotFound = true)
))
@ConfigurationProperties("groups.datasource")
class DbConfig {
val base: List<DataSourceProperties> = ArrayList()
val override: List<DataSourceProperties> = ArrayList()
}
を、私はセットアップにコンフィギュレーションクラスで私のdatasroucesを、このコンポーネントを使用します。
#Spring Boot Config for Oracle
# CENTRAL
groups.datasource.base[0].name=central
groups.datasource.base[0].url=jdbc:oracle:thin:@url:1530:sid
groups.datasource.base[0].username=user
groups.datasource.base[0].password=passwd
groups.datasource.base[0].driver=class name=oracle.jdbc.driver.OracleDriver
そして、私のsrc /テスト/リソース/ DBCONFIG/override.propertiesファイル:ここで
は私のsrc /メイン/リソース/ DBCONFIG/base.propertiesファイルです
#Spring Boot Config for Oracle
# PREPROD
groups.base.override[1].name=preprod
groups.base.override[1].url=jdbc:oracle:thin:@user:1542:sid
groups.base.override[1].username=user
groups.base.override[1].password=passwd
groups.base.override[1].driver=class name=oracle.jdbc.driver.OracleDriver
そして、ここに私のテストクラスです:
@RunWith(SpringJUnit4ClassRunner::class)
@SpringBootTest(classes = arrayOf(DatabaseComponent::class))
open class DatabaseComponentTest {
@Autowired
lateinit var env: Environment
@Test
fun testBaseConfiguration() {
assert(env.getProperty("groups.datasource.base[0].name") == "central")
assert(env.getProperty("groups.datasource.base[0].url") == "jdbc:oracle:thin:@url:1530:sid")
assert(env.getProperty("groups.datasource.base[0].username") == "user")
assert(env.getProperty("groups.datasource.base[0].password") == "passwd")
assert(env.getProperty("groups.datasource.base[0].driver") == "class name=oracle.jdbc.driver.OracleDriver")
}
@Test
fun testOverrideConfiguration() {
assert(env.getProperty("groups.datasource.override[0].name") == "preprod")
assert(env.getProperty("groups.datasource.override[0].url") == "jdbc:oracle:thin:@url:1542:sid")
assert(env.getProperty("groups.datasource.override[0].username") == "user")
assert(env.getProperty("groups.datasource.override[0].password") == "passwd")
assert(env.getProperty("groups.datasource.override[0].driver") == "class name=oracle.jdbc.driver.OracleDriver")
}
}
私はclassLoaderを調べると、ファイルoverride.properties彼のすべての価値が盛り込まれているようだ。
さらに、testBaseConfigurationは機能し、trueをアサートします。 一方、testOverrideConfigurationはfalseをアサートしません。
もう1つのことは、すべての動作がSpringモジュールで正常に機能し、オーバーライドがここにロードされてロードされていることです。私の問題はテストケースの問題です。
私は何が間違っているのでしょうか?
EDIT 1:ここではDataBaseComponentは次のとおりです。
@Configuration
@EnableAutoConfiguration
@ComponentScan
open class DatabaseComponent
私はまた、GitHubの上で私のコードを置く:あなたの特性がgroups.base.overrideなくgroups.datasourceと呼ばれているのでhttps://github.com/romainbsl/spring-database-sharding
にあなたがDatabaseComponentのソースコードを共有することはできますか? – chomnoue
OK、コードとgithubのリンクで私のポストを編集しました – romainbsl