记录开发中遇到的一些坑, 便于以后回顾, 也给面试的小伙伴提供一些素材.
1. springboot多模块项目中基础模块install失败, 或虽然install成功, 但是仓库中的jar包为springboot的可执行jar
原因: 查看打包日志可以发现, maven自身的打包插件先执行生成一个文件A(xx.jar), 之后springboot的打包插件再次执行打包又生成一个同名的文件B(xx.jar), 此时B文件会覆盖A文件
解决方案: 修改springboot的打包插件配置, 给打包结果添加一个后缀, 使其打包结果文件和maven自身打包结果文件不一样
org.springframework.boot
spring-boot-maven-plugin
exec
true
true
2. springboot打包时失败, 提示spring-boot-maven-plugin:2.1.6.RELEASE: Unable to find a single main class from the following candidates[xxx.xxx.xx, xxx.xxx.xx, ......] 或spring-boot-maven-plugin:2.1.6.RELEASE:repackage failed: Unable to find main class
1. pom.xml文件中设置parent为springboot, 且项目中有两个或两个以上的main方法, 且这些main方法所在的类上面没有@SpringBootApplication注解(即不确定哪个main方法作为主入口)
2. pom.xml文件中设置parent为springboot, 但项目中没有main方法
解决方案:
保证项目中有且今有一个main方法.在springboot中一般都仅有一个main方法, 其他的main方法更多的是做测试遗留的. 所以删掉不必要的main方法, 获取添加一个main方法
3. 在service层调用自身有事务的方法, 事务不生效
原因: 自调用时,用的不是ioc容器中的bean, 所以不会被aop做增强处理.
解决方案: 先获取ioc容器中相应的bean, 然后通过这个bean调用其他方法, 可参考:https://blog.csdn.net/changerzhuo_319/article/details/97095755
4. service层有多个方法, 且方法中都调用了mapper接口, 在A方法中mapper接口可以正常调用, 在B方法中mapper实例时null
原因: 事务仅对public、非static方法生效
解决方案: 修改方法的修饰符
5. springboot, mybatis多数据源时, 在配置文件中配置的下划线转驼峰不生效
可能原因:在配置文件中并没有指定具体哪个数据源需要下划线转驼峰, 所以没生效
解决方案: 在每个数据源配置中添加下划线转驼峰, 其他一些配置也需要在每个数据源中配置爱
6. feign 调用其他服务时, 用的get请求, 但报错提示post请求不支持
原因: 暂时未知
解决方案: 在请求参数上加上@requestParam("name")注解