目录
一、背景
黑马课程的SSM框架里面的MyBatisPlus部分的学习,学习的是selecPage方法的测试时候出现的,因为要配分页的拦截器,所有定义了一个config的类,同时配了@Configuration(@Component好像也可正常使用),然后去到测试时候就出现该错误:
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'myBatisPlusApplication' defined in class path resource
完整的:由于:org.springframework.beans.factory.BeanDefinitionStoreException:在类路径资源[com.dcg /config/ myconfig .class]中定义名称为'myBatisPlusApplication'的无效bean定义:@Bean定义被现有bean定义非法覆盖:通用bean:类[com.dcg.MyBatisPlusApplication];
即下图
二、分析
按照上面的翻译可以知道就是配置的@Bean被未知的东西给覆盖了,从而导致我们需要的配置的Bean失效了。
第一次尝试的想法是使@Bean不一样,就可以使未知的@Bean不去替换我们需要的@Bean。
(1)把@Configuration换为@Component,依旧不可以;
(2)更换导入方式,不用@Configuration被扫,而是直接导入@Import(com.dcg.config.MySpringBootConfig.class),很可惜,还是不可以;
(3)还有很多尝试就不写了,就网络有的我都尝试了,最后的解决方法还是直接。
三、解决方法
因为我看到一篇文章说类的名字如果跟方法的名字一样,就会给替换,但是我的本来就不一样,但是我还是去试一试了,本来的是下图的方法名字:
后面我就把它改为:
最后就成功了,说实话的我无法解释为何如此。
最后,我希望大佬给我说说看为什么“myBatisPlusApplication” 的名字是谁的bean名字,因为我认为在springBoot 或者mybatisplus跟springboot整合等等的包里面应该是有同一个名字为这个bean的。
--- 注:本人小白,只分享,并不能说明白什么,分享神奇之处而已,也请大佬多指教。