Skip to content

Commit fd3352a

Browse files
authored
Merge pull request #494 from harawata/fix-spring-boot-starter-475
Set attribute that helps MockitoPostProcessor replace a MyBatis mapper bean with a mock
2 parents c1e003f + 5c723b0 commit fd3352a

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

src/main/java/org/mybatis/spring/mapper/ClassPathMapperScanner.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ public class ClassPathMapperScanner extends ClassPathBeanDefinitionScanner {
5757

5858
private static final Logger LOGGER = LoggerFactory.getLogger(ClassPathMapperScanner.class);
5959

60+
// Copy of FactoryBean#OBJECT_TYPE_ATTRIBUTE which was added in Spring 5.2
61+
static final String FACTORY_BEAN_OBJECT_TYPE = "factoryBeanObjectType";
62+
6063
private boolean addToConfig = true;
6164

6265
private boolean lazyInitialization;
@@ -234,6 +237,10 @@ private void processBeanDefinitions(Set<BeanDefinitionHolder> beanDefinitions) {
234237

235238
definition.getPropertyValues().add("addToConfig", this.addToConfig);
236239

240+
// Attribute for MockitoPostProcessor
241+
// https://github.com/mybatis/spring-boot-starter/issues/475
242+
definition.setAttribute(FACTORY_BEAN_OBJECT_TYPE, beanClassName);
243+
237244
boolean explicitFactoryUsed = false;
238245
if (StringUtils.hasText(this.sqlSessionFactoryBeanName)) {
239246
definition.getPropertyValues().add("sqlSessionFactory",

src/test/java/org/mybatis/spring/mapper/MapperScannerConfigurerTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,14 @@ void testScanWithMapperFactoryBeanClass() {
385385
assertTrue(DummyMapperFactoryBean.getMapperCount() > 0);
386386
}
387387

388+
@Test
389+
void testMapperBeanAttribute() {
390+
startContext();
391+
392+
assertThat(applicationContext.getBeanDefinition("annotatedMapper").getAttribute(ClassPathMapperScanner.FACTORY_BEAN_OBJECT_TYPE))
393+
.isEqualTo(AnnotatedMapper.class.getName());
394+
}
395+
388396
private void setupSqlSessionFactory(String name) {
389397
GenericBeanDefinition definition = new GenericBeanDefinition();
390398
definition.setBeanClass(SqlSessionFactoryBean.class);

0 commit comments

Comments
 (0)