学习项目中遇到的BUG,避雷防险,提前规范必备

电子商城项目中遇到的Bug

正所谓阎王好惹,小鬼难缠,细数自己学项目期间,最消耗光阴的不是多么复杂的大问题,因为解决大问题能学到很多,反而是一些小问题,它们非常简单,简单到可能只是在字段多加了一个空格,但是确实最让人头疼,披着大Bug的外皮,消耗这我们的时间和精力,却在豁然开朗,拨开云雾时才发现,是个小的不能在小的case,不仅耽误学习进度,还毫无所获,只能怨粗心大意,而小Bug中有时往往又夹杂这大Bug,真是食之无味,弃之可惜,所有缺点都具备了,下面给大家细数下,我学习过程中,遇到的一些妖孽!

1.org.springframework.core.annotation.AnnotationConfigurationException: Attribute ‘proxyBeanMethods’ in annotation [org.springframework.boot.autoconfigure.SpringBootApplication] is declared as an @AliasFor nonexistent attribute ‘proxyBeanMethods’ in annotation [org.springframework.context.annotation.Configuration].; nested exception is java.lang.NoSuchMethodException: org.springframework.context.annotation.Configuration.proxyBeanMethods()

学习项目中遇到的BUG,避雷防险,提前规范必备
学习项目中遇到的BUG,避雷防险,提前规范必备
学习项目中遇到的BUG,避雷防险,提前规范必备
新建单体电商项目的时候,建立好相应模块,写好运行程序,运行时却报错了,在网上一搜,一个说是jar包版本太低,一个说是版本号不一致导致的,详情点击下面链接:
https://blog.****.net/qq_42664961/article/details/83860119
但是这些都解决不了问题,而且,同样的项目同样的代码在另一台电脑上却运行成功,一一比对后,才发现确实是版本号的问题,但我的问题是在主pom文件中添加的依赖在子模块中添加了一摸一样的:

主模块:

学习项目中遇到的BUG,避雷防险,提前规范必备

子模块:

学习项目中遇到的BUG,避雷防险,提前规范必备
由图可知,主模块没有添加版本号,而子模块添加了版本号,所以导致了这个错误,把它删掉就运行成功了,如下图:
学习项目中遇到的BUG,避雷防险,提前规范必备
(删除子模块版本号,还是升级主模块版本号,或者删除子模块相关依赖,视项目情况而定)

2.APPLICATION FAILED TO START

学习项目中遇到的BUG,避雷防险,提前规范必备
这个错误是因为主程序启动的时候扫描不到mapper文件,主程序启动的时候默认情况下会把com.imooc下的类和包进行扫描,但是对于mapper也是需要扫描的,尽管@SpringBootApplication中有@ComponentScan,但mapper是被mybatis扫描的,毕竟是对数据库的映射。
学习项目中遇到的BUG,避雷防险,提前规范必备
如果需要主启动类扫描它需要添加@MapperScan(加上mapper路径),启动就成功了
学习项目中遇到的BUG,避雷防险,提前规范必备

3.java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.()

学习项目中遇到的BUG,避雷防险,提前规范必备
报错是因为MapperScan扫描包使用的是org.mybatis的,应该使用import tk.mybatis.spring.annotation.MapperScan这个包,详情可以参考下网上其他教程的建议:
https://blog.****.net/qq_37495786/article/details/83448614
学习项目中遇到的BUG,避雷防险,提前规范必备
学习项目中遇到的BUG,避雷防险,提前规范必备

4.service实现层serviceImpl下红色波浪线处理:

学习项目中遇到的BUG,避雷防险,提前规范必备
虽然stuMapper报红色波浪线不影响项目,但是处女座可能看的不是很习惯要去掉,我们可以点击File下的setting:
里面有Inspections,其下的Spring -> SpringCore -> core -> Autowiring for bean class
方法有两个:
1.将Autowiring for bean class 后的对勾去掉运行
2.将Autowiring for bean class 后的Severity中的错误等级从Error 换成其他的都可以,我这里是去掉勾选
学习项目中遇到的BUG,避雷防险,提前规范必备
然后,红色波浪线就没有了:
学习项目中遇到的BUG,避雷防险,提前规范必备

5.Postman调用接口,在方法,路径,请求方式正确的情况下,报:Content type ‘text/plain;charset=UTF-8’ not supported的错误

学习项目中遇到的BUG,避雷防险,提前规范必备
学习项目中遇到的BUG,避雷防险,提前规范必备
项目运行成功了,但是使用Postman掉接口的时候却报了:Content type ‘text/plain;charset=UTF-8’ not supported"的错
使用翻译软件得到的结果是:内容类型“text/plain;charset=UTF-8”“不支持”
学习项目中遇到的BUG,避雷防险,提前规范必备
原因是后台返回的数据是Json格式,而Postman是使用text格式打开的,所以不支持,改成Json格式就好了
学习项目中遇到的BUG,避雷防险,提前规范必备
学习项目中遇到的BUG,避雷防险,提前规范必备

结尾:问题虽小,却是磨人。希望能帮助大家在技术的道路上,少走弯路,因为一些磨人的小妖精,耽误不必要耽误的时间