<
查看: 2161| 回复: 2
收起左侧

[经验总结] 新手村之Java做了项目才知道的点

 
庞克莱门汀 | 显示全部楼层
本楼:   👍  4
100%
0%
0   👎
全局:   690
98%
2%
15

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x

最近写项目的时候,遇到了一些unexpected behavior以及配置问题。 这个在我之前上学以及背八股面试题的时候,完全没有遇到过。


这些东西比较基础,也比较重要,能够扎实基础,分享一下。




SpringBoot Validation 之 处理 float payload


Scenario:我们有一个UserController, 有一个方法 saveUser (@Valid UserRequestDTO payload), 这是简单的UserRequestDTO的定义
UserRequestDTO (@NotNull Long userId, Integer age)




这里用了Spring Validation去负责Validation逻辑。


假如,前端传来的这样的数据 {"user_id": 1, "age": 12.3}.  请猜测一下Spring是否会报错还是会怎么样?


. 1point3acres.com

Result: Spring会自动创建一个 id是1, age是12的用户。而实际上,希望application能报错,然后返回给前端说明age必须是整数。


Reason:Jackson会自动将浮点数truncate成int


Solution: 需要设置Jackson中的ACCEPT_FLOAT_AS_INT为False

.--
Reference: https://stackoverflow.com/questi...lizing-with-jackson


==== 分割线 ====

. Χ
SpringBoot 配置 Swagger UI 出现异常


Scenario: 想给项目配置Swagger UI,但是启动的时候报错:
java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null


Reason:是SpringFox的一个Bug, SpringFox 默认 Mvc 路径匹配策略用Ant-based path matcher 而不是 the PathPattern-based matcher。具体可以看第二个reference link


Solution: 配置SwaggerConfig的时候输入第一个reference中的代码即可。. ----




Reference:
https://www.springcloud.io/post/2022-05/springboot-swagger/#gsc.tab=0
https://stackoverflow.com/questi...mentationpluginsboo
-baidu 1point3acres

. Waral dи,

==== 分割线 ====


SpringBoot 线上无法找到Resource资源,Local 没问题


Scenario: 项目读取Resource folder中的文件以进行后续操作。通过IntelliJ在本地跑起来并测试没有任何问题,但是到线上出现资源不存在的bug


代码写的是 Resource resource = new ClassPathResouce(...); resource.getFile() ....


Reason: new ClassPathResource是认为对应的文件在文件系统里面,而不是在Jar 里nested的。
测试方法,可以用过Java命令行把项目打包并在本地运行,也会出相同错误。用IntelliJ的run application不会报错。
. 1point 3 acres

Solution: 通过Inutstream is = getClass().getResourceAsStream(PATH)来获取资源就不会出现问题。


Reference: . .и
https://stackoverflow.com/questi...lder-in-spring-boot. .и
https://stackoverflow.com/questi...when-running-as-jar
-baidu 1point3acres


.
祝我们都早日上岸!也希望大佬们积极指点!提前感谢!

评分

参与人数 2大米 +11 收起 理由
bryanjhy + 10 给你点个赞!
YWAU + 1 给你点个赞!

查看全部评分


上一篇:Spring官方弃用了Java8
下一篇:新手村之MERN Stack新手速度出村指南
duo66fer 2023-11-30 07:09:38 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   14
88%
12%
2
感谢LZ分享,可以请教一下Java入门学习的路径以及方法吗?比如,你当初是怎么学习Java的,谢谢。
回复

使用道具 举报

柚子ECPL 2024-1-9 16:04:40 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   6
100%
0%
0
duo66fer 发表于 2023-11-29 15:09
感谢LZ分享,可以请教一下Java入门学习的路径以及方法吗?比如,你当初是怎么学习Java的,谢谢。

我最近也在准备学Java,我同学给推荐了B站上的这个学习路径,你可以看一下。https://www.bilibili.com/read/cv ... llection.opus.click
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

Advertisement
>
快速回复 返回顶部 返回列表