|
1 | 1 | /*
|
2 |
| - * Copyright 2002-2024 the original author or authors. |
| 2 | + * Copyright 2002-2025 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
|
58 | 58 | * @author Juergen Hoeller
|
59 | 59 | * @author Stephane Nicoll
|
60 | 60 | * @author Sam Brannen
|
| 61 | + * @author Yanming Zhou |
61 | 62 | * @since 3.1
|
62 | 63 | */
|
63 | 64 | class EnableTransactionManagementTests {
|
@@ -287,6 +288,34 @@ void gh24291TransactionManagerViaQualifierAnnotation() {
|
287 | 288 | ctx.close();
|
288 | 289 | }
|
289 | 290 |
|
| 291 | + @Test |
| 292 | + void transactionManagerViaQualifierAnnotationWithNoSuchBeanDefinitionException() { |
| 293 | + AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Gh34187Config.class); |
| 294 | + TransactionalTestBeanWithNonExistentQualifier bean = ctx.getBean(TransactionalTestBeanWithNonExistentQualifier.class); |
| 295 | + CallCountingTransactionManager txManager = ctx.getBean("txManager", CallCountingTransactionManager.class); |
| 296 | + |
| 297 | + bean.findAllFoos(); |
| 298 | + assertThat(txManager.begun).isEqualTo(1); |
| 299 | + assertThat(txManager.commits).isEqualTo(1); |
| 300 | + assertThat(txManager.rollbacks).isEqualTo(0); |
| 301 | + |
| 302 | + ctx.close(); |
| 303 | + } |
| 304 | + |
| 305 | + @Test |
| 306 | + void transactionManagerViaQualifierAnnotationWithBeanNotOfRequiredTypeException() { |
| 307 | + AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Gh34187Config.class); |
| 308 | + TransactionalTestBeanWithInvalidQualifier bean = ctx.getBean(TransactionalTestBeanWithInvalidQualifier.class); |
| 309 | + CallCountingTransactionManager txManager = ctx.getBean("txManager", CallCountingTransactionManager.class); |
| 310 | + |
| 311 | + bean.findAllFoos(); |
| 312 | + assertThat(txManager.begun).isEqualTo(1); |
| 313 | + assertThat(txManager.commits).isEqualTo(1); |
| 314 | + assertThat(txManager.rollbacks).isEqualTo(0); |
| 315 | + |
| 316 | + ctx.close(); |
| 317 | + } |
| 318 | + |
290 | 319 | @Test
|
291 | 320 | void spr14322AnnotationOnInterfaceWithInterfaceProxy() {
|
292 | 321 | AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Spr14322ConfigA.class);
|
@@ -386,6 +415,17 @@ public void saveQualifiedFooWithAttributeAlias() {
|
386 | 415 | public static class TransactionalTestBeanSubclass extends TransactionalTestBean {
|
387 | 416 | }
|
388 | 417 |
|
| 418 | + @Service |
| 419 | + @Qualifier("nonExistentBean") |
| 420 | + public static class TransactionalTestBeanWithNonExistentQualifier extends TransactionalTestBean { |
| 421 | + } |
| 422 | + |
| 423 | + @Service |
| 424 | + @Qualifier("transactionalTestBeanWithInvalidQualifier") |
| 425 | + public static class TransactionalTestBeanWithInvalidQualifier extends TransactionalTestBean { |
| 426 | + } |
| 427 | + |
| 428 | + |
389 | 429 |
|
390 | 430 | @Configuration
|
391 | 431 | static class PlaceholderConfig {
|
@@ -601,6 +641,36 @@ public CallCountingTransactionManager otherTxManager() {
|
601 | 641 | }
|
602 | 642 | }
|
603 | 643 |
|
| 644 | + @Configuration |
| 645 | + @EnableTransactionManagement |
| 646 | + @Import(PlaceholderConfig.class) |
| 647 | + static class Gh34187Config { |
| 648 | + |
| 649 | + @Autowired |
| 650 | + public void initializeApp(ConfigurableApplicationContext applicationContext) { |
| 651 | + applicationContext.getBeanFactory().registerSingleton( |
| 652 | + "qualifiedTransactionManager", new CallCountingTransactionManager()); |
| 653 | + applicationContext.getBeanFactory().registerAlias("qualifiedTransactionManager", "qualified"); |
| 654 | + } |
| 655 | + |
| 656 | + @Bean |
| 657 | + public TransactionalTestBeanWithNonExistentQualifier transactionalTestBeanWithNonExistentQualifier() { |
| 658 | + return new TransactionalTestBeanWithNonExistentQualifier(); |
| 659 | + } |
| 660 | + |
| 661 | + @Bean |
| 662 | + public TransactionalTestBeanWithInvalidQualifier transactionalTestBeanWithInvalidQualifier() { |
| 663 | + return new TransactionalTestBeanWithInvalidQualifier(); |
| 664 | + } |
| 665 | + |
| 666 | + @Bean |
| 667 | + @Primary |
| 668 | + public CallCountingTransactionManager txManager() { |
| 669 | + return new CallCountingTransactionManager(); |
| 670 | + } |
| 671 | + } |
| 672 | + |
| 673 | + |
604 | 674 |
|
605 | 675 | public interface BaseTransactionalInterface {
|
606 | 676 |
|
|
0 commit comments