Mybatis不同包里出現(xiàn)了同名類磷籍,啟動時報錯如下:
org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'sysSetMapper' for bean class [com.onlyas.appserver.dao.SysSetMapper] conflicts with existing, non-compatible bean definition of same name and class [com.onlyas.appserver.dao.dbo.SysSetMapper]
通過查看Spring源碼得知即横,當我們使用注解創(chuàng)建bean時,spring使用了AnnotationBeanNameGenerator來創(chuàng)建bean的名稱阵翎。
解決方案:自己寫一個Generator吧逢并。如下:
@SpringBootApplication
@ComponentScan(nameGenerator = MultidataApplication.SpringBeanNameGenerator.class)
public class MultidataApplication {
public static class SpringBeanNameGenerator extends AnnotationBeanNameGenerator {
@Override
protected String buildDefaultBeanName(BeanDefinition definition) {
return definition.getBeanClassName();
}
}
public static void main(String[] args) {
SpringApplication.run(MultidataApplication.class, args);
}
}
Mybatis的MapperScan里新增:
nameGenerator = MultidataApplication.SpringBeanNameGenerator.class
示例:
@MapperScan(basePackages="com.onlyas.appserver.dao", nameGenerator = MultidataApplication.SpringBeanNameGenerator.class)
好了,這樣再運行起來就不會報錯了郭卫。