103
103
* @author Mahmoud Ben Hassine
104
104
* @author Lars Uffmann
105
105
* @author Lasse Wulff
106
+ * @author Yanming Zhou
106
107
*/
107
108
@ ExtendWith (OutputCaptureExtension .class )
108
109
class BatchAutoConfigurationTests {
@@ -113,23 +114,22 @@ class BatchAutoConfigurationTests {
113
114
114
115
@ Test
115
116
void testDefaultContext () {
116
- this .contextRunner .withUserConfiguration (TestConfiguration .class , EmbeddedDataSourceConfiguration .class )
117
- .run ((context ) -> {
118
- assertThat (context ).hasSingleBean (JobRepository .class );
119
- assertThat (context ).hasSingleBean (JobLauncher .class );
120
- assertThat (context ).hasSingleBean (JobExplorer .class );
121
- assertThat (context ).hasSingleBean (JobRegistry .class );
122
- assertThat (context ).hasSingleBean (JobOperator .class );
123
- assertThat (context .getBean (BatchProperties .class ).getJdbc ().getInitializeSchema ())
124
- .isEqualTo (DatabaseInitializationMode .EMBEDDED );
125
- assertThat (new JdbcTemplate (context .getBean (DataSource .class ))
126
- .queryForList ("select * from BATCH_JOB_EXECUTION" )).isEmpty ();
127
- });
117
+ this .contextRunner .withUserConfiguration (EmbeddedDataSourceConfiguration .class ).run ((context ) -> {
118
+ assertThat (context ).hasSingleBean (JobRepository .class );
119
+ assertThat (context ).hasSingleBean (JobLauncher .class );
120
+ assertThat (context ).hasSingleBean (JobExplorer .class );
121
+ assertThat (context ).hasSingleBean (JobRegistry .class );
122
+ assertThat (context ).hasSingleBean (JobOperator .class );
123
+ assertThat (context .getBean (BatchProperties .class ).getJdbc ().getInitializeSchema ())
124
+ .isEqualTo (DatabaseInitializationMode .EMBEDDED );
125
+ assertThat (new JdbcTemplate (context .getBean (DataSource .class ))
126
+ .queryForList ("select * from BATCH_JOB_EXECUTION" )).isEmpty ();
127
+ });
128
128
}
129
129
130
130
@ Test
131
131
void autoconfigurationBacksOffEntirelyIfSpringJdbcAbsent () {
132
- this .contextRunner .withUserConfiguration (TestConfiguration . class , EmbeddedDataSourceConfiguration .class )
132
+ this .contextRunner .withUserConfiguration (EmbeddedDataSourceConfiguration .class )
133
133
.withClassLoader (new FilteredClassLoader (DatabasePopulator .class ))
134
134
.run ((context ) -> {
135
135
assertThat (context ).doesNotHaveBean (JobLauncherApplicationRunner .class );
@@ -253,7 +253,7 @@ void testDisableLaunchesJob() {
253
253
254
254
@ Test
255
255
void testDisableSchemaLoader () {
256
- this .contextRunner .withUserConfiguration (TestConfiguration . class , EmbeddedDataSourceConfiguration .class )
256
+ this .contextRunner .withUserConfiguration (EmbeddedDataSourceConfiguration .class )
257
257
.withPropertyValues ("spring.datasource.generate-unique-name=true" ,
258
258
"spring.batch.jdbc.initialize-schema:never" )
259
259
.run ((context ) -> {
@@ -270,7 +270,7 @@ void testDisableSchemaLoader() {
270
270
@ Test
271
271
void testUsingJpa () {
272
272
this .contextRunner
273
- .withUserConfiguration (TestConfiguration .class , EmbeddedDataSourceConfiguration .class ,
273
+ .withUserConfiguration (TestJpaConfiguration .class , EmbeddedDataSourceConfiguration .class ,
274
274
HibernateJpaAutoConfiguration .class )
275
275
.run ((context ) -> {
276
276
PlatformTransactionManager transactionManager = context .getBean (PlatformTransactionManager .class );
@@ -288,11 +288,9 @@ void testUsingJpa() {
288
288
@ Test
289
289
@ WithPackageResources ("custom-schema.sql" )
290
290
void testRenamePrefix () {
291
- this .contextRunner
292
- .withUserConfiguration (TestConfiguration .class , EmbeddedDataSourceConfiguration .class ,
293
- HibernateJpaAutoConfiguration .class )
291
+ this .contextRunner .withUserConfiguration (EmbeddedDataSourceConfiguration .class )
294
292
.withPropertyValues ("spring.datasource.generate-unique-name=true" ,
295
- "spring.batch.jdbc.schema:classpath:custom-schema.sql" , "spring.batch.jdbc.tablePrefix :PREFIX_" )
293
+ "spring.batch.jdbc.schema:classpath:custom-schema.sql" , "spring.batch.jdbc.table-prefix :PREFIX_" )
296
294
.run ((context ) -> {
297
295
assertThat (context ).hasSingleBean (JobLauncher .class );
298
296
assertThat (context .getBean (BatchProperties .class ).getJdbc ().getInitializeSchema ())
@@ -309,7 +307,7 @@ void testRenamePrefix() {
309
307
@ Test
310
308
void testCustomizeJpaTransactionManagerUsingProperties () {
311
309
this .contextRunner
312
- .withUserConfiguration (TestConfiguration .class , EmbeddedDataSourceConfiguration .class ,
310
+ .withUserConfiguration (TestJpaConfiguration .class , EmbeddedDataSourceConfiguration .class ,
313
311
HibernateJpaAutoConfiguration .class )
314
312
.withPropertyValues ("spring.transaction.default-timeout:30" ,
315
313
"spring.transaction.rollback-on-commit-failure:true" )
@@ -324,7 +322,7 @@ void testCustomizeJpaTransactionManagerUsingProperties() {
324
322
325
323
@ Test
326
324
void testCustomizeDataSourceTransactionManagerUsingProperties () {
327
- this .contextRunner .withUserConfiguration (TestConfiguration . class , EmbeddedDataSourceConfiguration .class )
325
+ this .contextRunner .withUserConfiguration (EmbeddedDataSourceConfiguration .class )
328
326
.withPropertyValues ("spring.transaction.default-timeout:30" ,
329
327
"spring.transaction.rollback-on-commit-failure:true" )
330
328
.run ((context ) -> {
@@ -338,49 +336,44 @@ void testCustomizeDataSourceTransactionManagerUsingProperties() {
338
336
339
337
@ Test
340
338
void testBatchDataSource () {
341
- this .contextRunner .withUserConfiguration (TestConfiguration .class , BatchDataSourceConfiguration .class )
342
- .run ((context ) -> {
343
- assertThat (context ).hasSingleBean (SpringBootBatchConfiguration .class )
344
- .hasSingleBean (BatchDataSourceScriptDatabaseInitializer .class )
345
- .hasBean ("batchDataSource" );
346
- DataSource batchDataSource = context .getBean ("batchDataSource" , DataSource .class );
347
- assertThat (context .getBean (SpringBootBatchConfiguration .class ).getDataSource ())
348
- .isEqualTo (batchDataSource );
349
- assertThat (context .getBean (BatchDataSourceScriptDatabaseInitializer .class ))
350
- .hasFieldOrPropertyWithValue ("dataSource" , batchDataSource );
351
- });
339
+ this .contextRunner .withUserConfiguration (BatchDataSourceConfiguration .class ).run ((context ) -> {
340
+ assertThat (context ).hasSingleBean (SpringBootBatchConfiguration .class )
341
+ .hasSingleBean (BatchDataSourceScriptDatabaseInitializer .class )
342
+ .hasBean ("batchDataSource" );
343
+ DataSource batchDataSource = context .getBean ("batchDataSource" , DataSource .class );
344
+ assertThat (context .getBean (SpringBootBatchConfiguration .class ).getDataSource ()).isEqualTo (batchDataSource );
345
+ assertThat (context .getBean (BatchDataSourceScriptDatabaseInitializer .class ))
346
+ .hasFieldOrPropertyWithValue ("dataSource" , batchDataSource );
347
+ });
352
348
}
353
349
354
350
@ Test
355
351
void testBatchTransactionManager () {
356
- this .contextRunner .withUserConfiguration (TestConfiguration .class , BatchTransactionManagerConfiguration .class )
357
- .run ((context ) -> {
358
- assertThat (context ).hasSingleBean (SpringBootBatchConfiguration .class );
359
- PlatformTransactionManager batchTransactionManager = context .getBean ("batchTransactionManager" ,
360
- PlatformTransactionManager .class );
361
- assertThat (context .getBean (SpringBootBatchConfiguration .class ).getTransactionManager ())
362
- .isEqualTo (batchTransactionManager );
363
- });
352
+ this .contextRunner .withUserConfiguration (BatchTransactionManagerConfiguration .class ).run ((context ) -> {
353
+ assertThat (context ).hasSingleBean (SpringBootBatchConfiguration .class );
354
+ PlatformTransactionManager batchTransactionManager = context .getBean ("batchTransactionManager" ,
355
+ PlatformTransactionManager .class );
356
+ assertThat (context .getBean (SpringBootBatchConfiguration .class ).getTransactionManager ())
357
+ .isEqualTo (batchTransactionManager );
358
+ });
364
359
}
365
360
366
361
@ Test
367
362
void jobRepositoryBeansDependOnBatchDataSourceInitializer () {
368
- this .contextRunner .withUserConfiguration (TestConfiguration .class , EmbeddedDataSourceConfiguration .class )
369
- .run ((context ) -> {
370
- ConfigurableListableBeanFactory beanFactory = context .getBeanFactory ();
371
- String [] jobRepositoryNames = beanFactory .getBeanNamesForType (JobRepository .class );
372
- assertThat (jobRepositoryNames ).isNotEmpty ();
373
- for (String jobRepositoryName : jobRepositoryNames ) {
374
- assertThat (beanFactory .getBeanDefinition (jobRepositoryName ).getDependsOn ())
375
- .contains ("batchDataSourceInitializer" );
376
- }
377
- });
363
+ this .contextRunner .withUserConfiguration (EmbeddedDataSourceConfiguration .class ).run ((context ) -> {
364
+ ConfigurableListableBeanFactory beanFactory = context .getBeanFactory ();
365
+ String [] jobRepositoryNames = beanFactory .getBeanNamesForType (JobRepository .class );
366
+ assertThat (jobRepositoryNames ).isNotEmpty ();
367
+ for (String jobRepositoryName : jobRepositoryNames ) {
368
+ assertThat (beanFactory .getBeanDefinition (jobRepositoryName ).getDependsOn ())
369
+ .contains ("batchDataSourceInitializer" );
370
+ }
371
+ });
378
372
}
379
373
380
374
@ Test
381
375
void jobRepositoryBeansDependOnFlyway () {
382
- this .contextRunner .withUserConfiguration (TestConfiguration .class , EmbeddedDataSourceConfiguration .class )
383
- .withUserConfiguration (FlywayAutoConfiguration .class )
376
+ this .contextRunner .withUserConfiguration (EmbeddedDataSourceConfiguration .class , FlywayAutoConfiguration .class )
384
377
.withPropertyValues ("spring.batch.initialize-schema=never" )
385
378
.run ((context ) -> {
386
379
ConfigurableListableBeanFactory beanFactory = context .getBeanFactory ();
@@ -396,8 +389,8 @@ void jobRepositoryBeansDependOnFlyway() {
396
389
@ Test
397
390
@ WithResource (name = "db/changelog/db.changelog-master.yaml" , content = "databaseChangeLog:" )
398
391
void jobRepositoryBeansDependOnLiquibase () {
399
- this .contextRunner . withUserConfiguration ( TestConfiguration . class , EmbeddedDataSourceConfiguration . class )
400
- .withUserConfiguration (LiquibaseAutoConfiguration .class )
392
+ this .contextRunner
393
+ .withUserConfiguration (EmbeddedDataSourceConfiguration . class , LiquibaseAutoConfiguration .class )
401
394
.withPropertyValues ("spring.batch.initialize-schema=never" )
402
395
.run ((context ) -> {
403
396
ConfigurableListableBeanFactory beanFactory = context .getBeanFactory ();
@@ -411,8 +404,7 @@ void jobRepositoryBeansDependOnLiquibase() {
411
404
412
405
@ Test
413
406
void whenTheUserDefinesTheirOwnBatchDatabaseInitializerThenTheAutoConfiguredInitializerBacksOff () {
414
- this .contextRunner
415
- .withUserConfiguration (TestConfiguration .class , CustomBatchDatabaseInitializerConfiguration .class )
407
+ this .contextRunner .withUserConfiguration (CustomBatchDatabaseInitializerConfiguration .class )
416
408
.withConfiguration (AutoConfigurations .of (DataSourceAutoConfiguration .class ,
417
409
DataSourceTransactionManagerAutoConfiguration .class ))
418
410
.run ((context ) -> assertThat (context ).hasSingleBean (BatchDataSourceScriptDatabaseInitializer .class )
@@ -422,7 +414,7 @@ void whenTheUserDefinesTheirOwnBatchDatabaseInitializerThenTheAutoConfiguredInit
422
414
423
415
@ Test
424
416
void whenTheUserDefinesTheirOwnDatabaseInitializerThenTheAutoConfiguredBatchInitializerRemains () {
425
- this .contextRunner .withUserConfiguration (TestConfiguration . class , CustomDatabaseInitializerConfiguration .class )
417
+ this .contextRunner .withUserConfiguration (CustomDatabaseInitializerConfiguration .class )
426
418
.withConfiguration (AutoConfigurations .of (DataSourceAutoConfiguration .class ,
427
419
DataSourceTransactionManagerAutoConfiguration .class ))
428
420
.run ((context ) -> assertThat (context ).hasSingleBean (BatchDataSourceScriptDatabaseInitializer .class )
@@ -431,8 +423,9 @@ void whenTheUserDefinesTheirOwnDatabaseInitializerThenTheAutoConfiguredBatchInit
431
423
432
424
@ Test
433
425
void conversionServiceCustomizersAreCalled () {
434
- this .contextRunner .withUserConfiguration (TestConfiguration .class , EmbeddedDataSourceConfiguration .class )
435
- .withUserConfiguration (ConversionServiceCustomizersConfiguration .class )
426
+ this .contextRunner
427
+ .withUserConfiguration (EmbeddedDataSourceConfiguration .class ,
428
+ ConversionServiceCustomizersConfiguration .class )
436
429
.run ((context ) -> {
437
430
BatchConversionServiceCustomizer customizer = context .getBean ("batchConversionServiceCustomizer" ,
438
431
BatchConversionServiceCustomizer .class );
@@ -481,8 +474,8 @@ void whenTheUserDefinesAJobNameThatDoesNotExistWithRegisteredJobFailsFast() {
481
474
482
475
@ Test
483
476
void customExecutionContextSerializerIsUsed () {
484
- this .contextRunner .withUserConfiguration (TestConfiguration . class , EmbeddedDataSourceConfiguration .class )
485
- .withUserConfiguration ( CustomExecutionContextConfiguration .class )
477
+ this .contextRunner .withUserConfiguration (EmbeddedDataSourceConfiguration .class )
478
+ .withBean ( ExecutionContextSerializer .class , Jackson2ExecutionContextStringSerializer :: new )
486
479
.run ((context ) -> {
487
480
assertThat (context ).hasSingleBean (Jackson2ExecutionContextStringSerializer .class );
488
481
assertThat (context .getBean (SpringBootBatchConfiguration .class ).getExecutionContextSerializer ())
@@ -492,12 +485,11 @@ void customExecutionContextSerializerIsUsed() {
492
485
493
486
@ Test
494
487
void defaultExecutionContextSerializerIsUsed () {
495
- this .contextRunner .withUserConfiguration (TestConfiguration .class , EmbeddedDataSourceConfiguration .class )
496
- .run ((context ) -> {
497
- assertThat (context ).doesNotHaveBean (ExecutionContextSerializer .class );
498
- assertThat (context .getBean (SpringBootBatchConfiguration .class ).getExecutionContextSerializer ())
499
- .isInstanceOf (DefaultExecutionContextSerializer .class );
500
- });
488
+ this .contextRunner .withUserConfiguration (EmbeddedDataSourceConfiguration .class ).run ((context ) -> {
489
+ assertThat (context ).doesNotHaveBean (ExecutionContextSerializer .class );
490
+ assertThat (context .getBean (SpringBootBatchConfiguration .class ).getExecutionContextSerializer ())
491
+ .isInstanceOf (DefaultExecutionContextSerializer .class );
492
+ });
501
493
}
502
494
503
495
private JobLauncherApplicationRunner createInstance (String ... registeredJobNames ) {
@@ -560,7 +552,7 @@ static class EmptyConfiguration {
560
552
}
561
553
562
554
@ TestAutoConfigurationPackage (City .class )
563
- static class TestConfiguration {
555
+ static class TestJpaConfiguration {
564
556
565
557
}
566
558
@@ -838,14 +830,4 @@ BatchConversionServiceCustomizer anotherBatchConversionServiceCustomizer() {
838
830
839
831
}
840
832
841
- @ Configuration (proxyBeanMethods = false )
842
- static class CustomExecutionContextConfiguration {
843
-
844
- @ Bean
845
- ExecutionContextSerializer executionContextSerializer () {
846
- return new Jackson2ExecutionContextStringSerializer ();
847
- }
848
-
849
- }
850
-
851
833
}
0 commit comments