Spring Boot 程序优化的 14 个小妙招!

news/2024/11/27 23:41:39/
  • 1.定义配置文件信息

  • 2.用@RequiredArgsConstructor代替@Autowired

  • 3.代码模块化

  • 4.抛异常而不是返回

  • 5.减少不必要的db

  • 6.不要返回null

  • 7.if else

  • 8.减少controller业务代码

  • 9.利用好Idea

  • 10.阅读源码

  • 11.设计模式

  • 12.拥抱新知识

  • 13.基础问题

  • 14.判断元素是否存在

1.定义配置文件信息


有时候我们为了统一管理会把一些变量放到yml配置文件中

用 @ConfigurationProperties 代替@Value

使用方法

定义对应字段的实体

使用时注入这个bean

2. 用@RequiredArgsConstructor代替@Autowired


我们都知道注入一个bean有三种方式哦(set注入, 构造器注入, 注解注入),spring推荐我们使用构造器的方式注入Bean

我们来看看上段代码编译完之后的样子

RequiredArgsConstructor:lombok提供

3.代码模块化


阿里巴巴Java开发手册中说到每个方法的代码不要超过50行(我没记错的话)

在实际的开发中我们要善于拆分自己的接口或方法, 做到一个方法只处理一种逻辑, 说不定以后某个功能就用到了, 拿来即用

4. 抛异常而不是返回


在写业务代码的时候,经常会根据不同的结果返回不同的信息,尽量减少返回,会显得代码比较乱

反例

正例

5. 减少不必要的db


尽可能地减少对数据库的查询

举例子

删除一个服务(已下架或未上架的才能删除)

之前有看别人写的代码,会先根据id查询该记录,然后做一些判断

反例

正例

6. 不要返回null


反例

正例

别处调用方法时,避免不必要的空指针

7. if else


不要太多了if else if

可以试试策略模式代替

8. 减少controller业务代码


业务代码尽量放到service层进行处理,后期维护起来也好操作而且美观

反例

正例

9. 利用好Idea


目前为止市面上的企业基本都用idea作为开发工具了吧

举一个小例子

idea会对我们的代码进行判断,提出合理的建议

例如:

它推荐我们用lanbda的形式代替

点击replace

10. 阅读源码


一定要养成阅读源码的好习惯包括优秀的开源项目GitHub上stars:>1000, 会从中学好好多知识包括其对代码的设计思想以及高级API,面试加分(好多面试官习惯问源码相关的知识)

11. 设计模式


23种设计模式,要尝试代码中运用设计模式思想,写出的代码既规范又美观还高大上哈哈。

12. 拥抱新知识


像我们这种工作年限少的程序员,我觉得要多学习自己认知之外的知识,不能每天crud,有机会就多用用有点难度的知识,没有机会(项目较传统),可以自己下班多些相关demo练习

13. 基础问题


map遍历

optional 判空

递归

大数据量的递归时,避免在递归方法里new对象,可以试试把对象当作方法参数进行传递使用

注释

类 接口方法 注解 较复杂的方法 注释都要写而且要写清楚, 有时候写注释不是给别人看的 而是给自己看的

14. 判断元素是否存在


hashSet而不是list

list判断一个元素是否存在的代码

由此可见其复杂度为On

而hashSet底层采用hashMap作为数据结构进行存储,元素都放到map的key(即链表中)

由此可见其复杂度为O1


http://www.ppmy.cn/news/10949.html

相关文章

QT Echarts 联动共享数据表图 使用详解

Echarts是百度的一款可视化界面开发的平台,里面的地图以及数据可视化内容十分丰富,适合用于一些大屏数据显示项目或者一些ui界面开发。每一个ECharts图表使用一个无边框的QWebView来展示,这样多个不同类型的ECharts图表就是多个封装不同类型E…

ubuntu docker elasticsearch kibana安装部署

ubuntu docker elasticsearch 安装部署 所有操作尽量在root下操作. 安装docker 1. 由于是基于宝塔面板安装的所以简答的点击操作即可完成安装. 我这里已经是正常的安装好了. 2.dcoker 镜像加速 https://cr.console.aliyun.com/cn-hangzhou/instances访问这个网址进去进行了…

[数据库迁移]-LVM逻辑卷管理

[数据库迁移]-LVM逻辑卷管理 森格 | 2023年1月 1、本文旨在记录数据库迁移过程(下云至机房)中,对新磁盘做逻辑卷管理的过程,并对Linux的文件系统和分区做了相关介绍,如有不对之处,敬请指正。 2、对Linux文…

SpringCloud(12)— 分布式事务(Seata)

SpringCloud(12)— 分布式事务(Seata) 一 事务基础 1.事务的ACID原则 2.分布式事务问题 在分布式系统下,一个业务跨越多个服务或数据源,每一个服务都是一个事务。 要保证所有分支事务的最终状态一致&am…

React(coderwhy)- 09(项目实战 - 1)

创建React项目 ◼ 创建项目的方式:create-react-app ◼ 项目配置:  配置项目的icon  配置项目的标题  配置jsconfig.json 新建jsconfig.json文件,在文件中粘贴以下内容{"compilerOptions": {"target": "es5","…

unity日记4(鼠标键盘交互、实例)

目录 鼠标事件 鼠标点击、抬起、长按事件 键盘事件 键盘点击、抬起、长按事件 键盘键位替换 实例:鼠标-音乐播放/暂停 实例:调用其他对象的组件(双方法) 实例:调整其他对象的公有参数 鼠标事件 鼠标点击、抬起、长…

【计算机网络】网络基础

目录前言一、计算机网络发展二、初识“协议”1. 协议的概念2. 协议分层三、OSI七层模型四、TCP/IP五层(四层)模型五、网络传输基本流程1. 网络传输流程图2.数据包封装和分用六、网络中的地址管理1. IP地址2. MAC地址前言 本文是博主首次学习网络知识后进行的总结,文…

【SQLyog错误号码2058解决办法】

当你遇到下图这个错误时,是由于SQLyog在8.0以上版本采用了新的加密方式。 解决办法: win R打开 , 输入cmd,打开命令行窗口, 然后连接你的SQLyog版本的服务器, mysql -uroot -P3306 -p注意:…