Wenn Sie mehrere DataSources im Spring-Batch definieren, können Sie angeben, welche bei der automatischen Konfiguration des Spring-Batch mit `` @ BatchDataSource``` verwendet werden soll. Laut dem Javadoc von "@ @ BatchDataSource" scheint es in "2.2.0" hinzugefügt worden zu sein.
Die Definition ist wie folgt und die Realität ist nur "@ Qualifier". Laut javadoc ist die typische Verwendung eine Hauptdatenquelle, die "@ Primary" enthält, und eine zweite Datenquelle für Spring-Batch, die diese Anmerkung enthält. Dies wäre ähnlich, wenn die Haupt-DB und die Metadatenspeicher-Ziel-DB getrennt sind.
/**
* Qualifier annotation for a DataSource to be injected into Batch auto-configuration. Can
* be used on a secondary data source, if there is another one marked as
* {@link Primary @Primary}.
*
* @author Dmytro Nosan
* @since 2.2.0
*/
@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Qualifier
public @interface BatchDataSource {
}
Anwendungsbeispiel.
@Bean
@BatchDataSource
public DataSource springBatchDs() {
return DataSourceBuilder.create().url("jdbc:h2:~/test").username("sa").password("").build();
}
@Bean
@Primary
public DataSource primaryDs() {
return DataSourceBuilder.create().url("jdbc:oracle:thin:system/oracle@localhost:11521/XEPDB1").username("system").password("oracle").build();
}
Im obigen Beispiel ist das Hauptelement Oracle und das Metadatenspeicherziel H2.
Es ist nicht so, dass diese Art von Einstellung in der Vergangenheit nicht möglich war, aber es scheint, dass die dedizierte Anmerkung es einfacher macht, die Absicht zu klären.
Recommended Posts