1.类名重复了:项目和子模块中存在类名相同的java类,启动项目的时候会报错。
Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name 'MyPurchaseService' for bean class
[com.mytest.service.impl.MyPurchaseService] conflicts with existing,
non-compatible bean definition of same name and class [com.autoyol.insurance.service.pingan.MyPurchaseService]
2.idea创建gradle多模块使用方法,配置文件,扫描包
https://www.cnblogs.com/oktokeep/p/16965441.html
https://www.cnblogs.com/oktokeep/p/17629507.html
3.idea连接数据库,也可以生成代码
4.数据库的E-R图 实体关系图 mysql workbench
5.多数据库源的配置
Not loading a JDBC driver as driverClassName property is null. 解决,数据源的apollo配置。
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.datasource.mydatasourceTwo.driver-class-name = com.mysql.jdbc.Driver
6.子模块中运行没有找到配置文件,是因为缺少了Apollo配置。
7.数据库底层 操作日志表
扩展:对注解符号 io.swagger.annotations.ApiOperation 进行拦截,添加数据库日志。
8.token登录接口开发,postman测试 jwt(去掉~~) 赋值给公共的对象中来获取 当前的登录账号信息,引入redis
9.订单的定时任务,订单状态的流转 未支付/进行中/已完成
10.订单号规则,不能重复。redis去重
11.GlobalRequestExceptionHandler 全局异常类 it
LocalBusinessException 本地该异常类改名称了。 与BusinessException类同名,存在歧义。导致捕获的时候,需要根据Exception实际的classpath的类捕获。
拦截全局的异常信息 GlobalExceptionAdvisor 避免异常信息
12.分页的插件,jar版本的区别。注意gradle jar版本的区别
13.OpenFeign调用远程服务时用GetMapping调用接口时传参用@RequestBody注解 >> 导致yapi没有生成请求参数。 去掉@RequestBody解决
Get请求参数使用?a=1&b=2 接收参数可以使用对象来接收,不用注解@RequestBody 请求参数不能用Body json串的方式来传递。
14.
<T>指定类型,否则会报以下错误:
2024-01-03 11:28:59.464 [http-nio-1278-exec-4] [8d5d894dc1f69be8,8d5d894dc1f69be8] ERROR c.a.c.d.c.ScooterOrderController#submitInsureOrderCommon$original$x0C9yRwt [line:281] -
下单异常:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.mytest.api.vo.res.ProductOnlinesaleVo
泛型对象接收的时候需要指定类型<T> 修改成 <ProductOnlinesaleVo>,这样在接收的时候不会报错。
15.ecodeException: JSON parse error: Can not deserialize instance of java.time.LocalDateTime out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.time.LocalDateTime out of START_ARRAY token
at [Source: java.io.PushbackInputStream@869d612; line: 1, column: 559] (through reference chain: com.autoyol.insurancedock.api.vo.ResponseVO["data"]->com.autoyol.insurancedock.api.vo.res.CpicCouponOnlinesaleVo["pkgCouponValidReceiveDate"])
加上jar compile ("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
16.mysql数据库字段扩容
ALTER TABLE auth_code MODIFY COLUMN `ticket_code` VARCHAR(50) DEFAULT NULL COMMENT '券码ID';
17.查看依赖
D:\git\version2\myManageService-service>gradle dependencies >> 1112.txt
排除依赖
项目:myManageService
compile('com.mytest.xxljob:xxljob-starter:2.0.1-SNAPSHOT'){
exclude module: 'xxl-job-core'
}
compile('com.xuxueli:xxl-job-core:2.0.1-SNAPSHOT'){
exclude module: 'jetty-server'
}
18.mysql bigint java用什么存储。 使用long或者BigInteger
19.
@RequestMapping(path = {"/test","/public/test"}) //请求地址支持多路径,字符串数组
20.模糊查询在表数据量很大的时候会导致表的查询速度很慢,会导致崩溃。
payTrans_Id LIKE CONCAT(CONCAT('%',#{payTransId}))
payTrans_Id = #{payTransId}
21.idea的配置文件:gradle/wapper/gradle-wrapper.properties
//distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
22.fat1测试环境启动报错:
1.Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redissonClient' threw excep
compile('org.redisson:redisson:3.5.0')
compile("io.netty:netty-all:4.1.13.Final") 缺少了这个依赖,需要对队出现
2.过滤文件 /out 过滤目录 idea中可以删除
3.本地idea clean 或者重新刷新编译
23.uuid创建
UUID.randomUUID().toString().replace("-", "");
24.支付退款金额按double存储,可以支持小数点
25.mybatis添加返回ID
keyColumn="id" keyProperty="id" useGeneratedKeys="true"
useGeneratedKeys="true" keyProperty="id"
25.Linux文件搜索
1.关键字“或”的搜索, -E 不能少。
grep -E "word1|word2|word3" file.txt
满足任意条件(word1、word2和word3之一)将匹配。
2.关键字“且”的搜索
grep word1 file.txt | grep word2 |grep word3
必须同时满足三个条件(word1、word2和word3)才匹配。
https://www.cnblogs.com/oktokeep/p/17918988.html
26.常量类
NumberUtils.INTEGER_ZERO
NumberUtils.INTEGER_ONE
常量可以统一都写到 Constants.java
代码中尽量避免魔法数字,
或者使用 NumberUtils.INTEGER_ZERO:0
NumberUtils.INTEGER_ONE:1
27.退款和退保幂等接口处理
//退保成功后,无需重复发起退保操作 + 幂等/异步操作
28.请求头 Authorization:123456789 //默认token:123456789模拟跳过,方法在接口测试的时候,可以跳过登录接口获取的token
29.二维码扫码支付测试,可以通过接口测试,qr码通过草料生成二维码,然后扫码支付,支付消息通过mq发送,可以模拟rabbitmq通过客户端来发送,
这样可以一次支付,多次通过rabbitmq来测试。使支付成功后的流程走顺。
30.角色,权限这套可以简化,比如:董事长,部门经理,员工。所以在最底层的员工表中,添加角色,权限的字段来控制。
因为董事长,部门经理本质上仍然是员工。所以在员工表中统一存储。如果涉及到登录账号的账号,密码。也可以在员工表中来存储。