Skip to content

Commit 5230c5e

Browse files
committed
解决判断 MapperFactoryBean 包名错误的大 BUG,应该是 tk.mybatis.spring.mapper.MapperFactoryBean 而不是 org.mybatis.spring.mapper.MapperFactoryBean,这个 BUG 导致了 issues 中出现的 WARN 警告。
同时增加 mybatis.basePackages 参数用于配置 starter 时扫描的包名,如果配置了该报名,就不在限制接口必须有 @Mapper 注解。
1 parent 06c0e24 commit 5230c5e

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

spring-boot-starter/mapper-spring-boot-autoconfigure/src/main/java/tk/mybatis/mapper/autoconfigure/MapperAutoConfiguration.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.apache.ibatis.session.SqlSessionFactory;
2424
import org.mybatis.spring.SqlSessionFactoryBean;
2525
import org.mybatis.spring.SqlSessionTemplate;
26-
import org.mybatis.spring.mapper.MapperFactoryBean;
2726
import org.slf4j.Logger;
2827
import org.slf4j.LoggerFactory;
2928
import org.springframework.beans.BeansException;
@@ -54,10 +53,14 @@
5453
import org.springframework.util.CollectionUtils;
5554
import org.springframework.util.ObjectUtils;
5655
import org.springframework.util.StringUtils;
56+
import tk.mybatis.spring.annotation.BaseProperties;
5757
import tk.mybatis.spring.mapper.ClassPathMapperScanner;
58+
import tk.mybatis.spring.mapper.MapperFactoryBean;
59+
import tk.mybatis.spring.mapper.SpringBootBindUtil;
5860

5961
import javax.annotation.PostConstruct;
6062
import javax.sql.DataSource;
63+
import java.util.Arrays;
6164
import java.util.List;
6265

6366
/**
@@ -194,15 +197,20 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, B
194197
if (this.resourceLoader != null) {
195198
scanner.setResourceLoader(this.resourceLoader);
196199
}
197-
198200
List<String> packages = AutoConfigurationPackages.get(this.beanFactory);
199201
if (logger.isDebugEnabled()) {
200202
for (String pkg : packages) {
201203
logger.debug("Using auto-configuration base package '{}'", pkg);
202204
}
203205
}
204-
205-
scanner.setAnnotationClass(Mapper.class);
206+
BaseProperties properties = SpringBootBindUtil.bind(environment, BaseProperties.class, BaseProperties.MYBATIS_PREFIX);
207+
String[] basePackages = properties.getBasePackages();
208+
if(basePackages != null && basePackages.length > 0){
209+
packages.addAll(Arrays.asList(basePackages));
210+
} else {
211+
//设置了包名的情况下,不需要指定该注解
212+
scanner.setAnnotationClass(Mapper.class);
213+
}
206214
scanner.registerFilters();
207215
scanner.doScan(StringUtils.toStringArray(packages));
208216
} catch (IllegalStateException ex) {

0 commit comments

Comments
 (0)