Skip to content

Commit b1a7a5b

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 b1a7a5b

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.mybatis.spring.SqlSessionTemplate;
2727
import org.springframework.aop.scope.ScopedProxyFactoryBean;
2828
import org.springframework.aop.scope.ScopedProxyUtils;
29+
import org.springframework.beans.factory.FactoryBean;
2930
import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition;
3031
import org.springframework.beans.factory.config.BeanDefinition;
3132
import org.springframework.beans.factory.config.BeanDefinitionHolder;
@@ -57,6 +58,9 @@ public class ClassPathMapperScanner extends ClassPathBeanDefinitionScanner {
5758

5859
private static final Logger LOGGER = LoggerFactory.getLogger(ClassPathMapperScanner.class);
5960

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

6266
private boolean lazyInitialization;
@@ -234,6 +238,10 @@ private void processBeanDefinitions(Set<BeanDefinitionHolder> beanDefinitions) {
234238

235239
definition.getPropertyValues().add("addToConfig", this.addToConfig);
236240

241+
// Attribute for MockitoPostProcessor
242+
// https://github.com/mybatis/spring-boot-starter/issues/475
243+
definition.setAttribute(FactoryBean.OBJECT_TYPE_ATTRIBUTE, beanClassName);
244+
237245
boolean explicitFactoryUsed = false;
238246
if (StringUtils.hasText(this.sqlSessionFactoryBeanName)) {
239247
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)