Skip to content

Commit 5c723b0

Browse files
committed
Set attribute that helps MockitoPostProcessor replace a MyBatis mapper bean with a mock
mybatis/spring-boot-starter#475 spring-projects/spring-boot@f4985ab
1 parent 2af8093 commit 5c723b0

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

+7
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

+8
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)