当前位置: 首页 > article >正文

Spring Boot实用小技巧5 - 第527篇

《国内最全的Spring Boot系列之一》

《国内最全的Spring Boot系列之二》

《国内最全的Spring Boot系列之三》

《国内最全的Spring Boot系列之四》

《国内最全的Spring Boot系列之五》

《国内最全的Spring Boot系列之六》

《国内最全的Spring Boot系列之七》

SpringBoot 中多例模式的神秘世界:用法区别以及应用场景,最后的灵魂拷问会吗?- 第519篇

SpringBoot开发的AI导航站技术架构剖析 —— 技术如何选型 -  第520篇

SpringBoot多例模式,在同一个类中注入两次是否是同一个对象 – 一不小心就会写出一个重大BUG!!- 521篇

SpringBoot基本原理,轻松应对面试官 - 第522篇

Spring Boot实用小技巧 -  - 第523篇

Spring Boot实用小技巧2 - 第524篇

Spring Boot实用小技巧3 - 第525篇

Spring Boot实用小技巧4 - 第526篇

最近发现一个AI工具 - 只需要上传一张照片,1分钟就可以生成一个舞蹈视频,我在思考要不要搞一个抖音账号,做个跳舞搞笑的账号???

Viggle AI - AI让照片跳舞

AI舞蹈

图片

导读

对于基础的,技术人员大部分都懂,如果碰到一些特别的需求,一般就是在于一些小技巧就能够轻松解决,知道和不知道的差别就是技术方案上的不同。

所以,平时要都去了解一些小技巧,以此来增加自己快速解决需求的能力。

技巧1:容器启动完成操作

当你希望Spring容器正确初始化加载完成以后,执行一些操作,那么你可以监听ContextRefreshedEvent事件。该实际的触发是在refresh方法执行的最后阶段。

import org.springframework.context.ApplicationListener;import org.springframework.context.event.ContextRefreshedEvent;import org.springframework.stereotype.Component;@Componentpublic class ContextRefreshedListener implements ApplicationListener<ContextRefreshedEvent> {    @Override    public void onApplicationEvent(ContextRefreshedEvent event) {        System.out.println("上下文刷新完成...") ;        // TODO    }}

通过监听该事件,你可以在这里实现你自己的逻辑。

技巧2:异步处理提升性能

SpringBoot支持异步处理,你可以使用@Async注解来异步执行方法,提升应用的性能和响应速度,这个是一个好功能,如果执行异步功能,一般我们都要自己开线程去执行异步任务,但是用异步注解可以由框架启动一个内嵌的异步任务执行我们的代码逻辑,这个相当优雅,有没有?代码是不是很漂亮!

@Servicepublic class AsyncService {    @Async    public void executeAsyncTask() {        // 执行异步任务    }}

技巧3: @Conditional的强大之处

不知道你们有没有遇到过这些问题:

(1)某个功能需要根据项目中有没有某个jar判断是否开启该功能。

(2)某个bean的实例化需要先判断另一个bean有没有实例化,再判断是否实例化自己。

(3)某个功能是否开启,在配置文件中有个参数可以对它进行控制。

如果你有遇到过上述这些问题,那么恭喜你,@Conditional很适合你。

技巧4:使用自定义BOM来维护第三方依赖

Spring Boot项目本身使用和集成了大量的开源项目,它帮助我们维护了这些第三方依赖。但是也有一部分在实际项目使用中并没有包括进来,这就需要我们在项目中自己维护版本。如果在一个大型的项目中,包括了很多未开发模块,那么维护起来就非常的繁琐。

怎么办呢?事实上,Spring IO Platform就是做的这个事情,它本身就是Spring Boot的子项目,同时维护了其他第三方开源库。我们可以借鉴Spring IO Platform来编写自己的基础项目platform-bom,所有的业务模块项目应该以BOM的方式引入。这样在升级第三方依赖时,就只需要升级这一个依赖的版本而已。

技巧5:考虑为常见的组织问题创建自己的自动配置

这一条也来自Josh Long(Spring Advocate,@starbuxman)——这个实践是针对高级用户的。

如果你在一个严重依赖Spring Boot的公司或团队中工作,并且有共同的问题需要解决,那么你可以创建自己的自动配置。

这项任务涉及较多工作,因此你需要考虑何时获益是值得投入的。与多个略有不同的定制配置相比,维护单个自动配置更容易。

如果将这个提供Spring Boot配置以开源库的形式发布出去,那么将极大地简化数千个用户的配置工作。

技巧6:保持@Controller的简洁和专注

Controller应该非常简单。你可以在此处阅读有关GRASP中有关控制器模式部分的说明。你希望控制器作为协调和委派的角色,而不是执行实际的业务逻辑。以下是主要做法:

1) 控制器应该是无状态的!默认情况下,控制器是单例,并且任何状态都可能导致大量问题;

2) 控制器不应该执行业务逻辑,而是依赖委托;

3) 控制器应该处理应用程序的HTTP层,这不应该传递给服务;

4) 控制器应该围绕用例/业务能力来设计。

要深入这个内容,需要进一步地了解设计REST API的最佳实践。无论你是否想要使用Spring Boot,都是值得学习的。

图片

历史文章(文章累计520+)

《国内最全的Spring Boot系列之一》

《国内最全的Spring Boot系列之二》

《国内最全的Spring Boot系列之三》

《国内最全的Spring Boot系列之四》

《国内最全的Spring Boot系列之五》

《国内最全的Spring Boot系列之六》

《国内最全的Spring Boot系列之七》

Spring Boot整合ElasticSearch实战 - 第511篇

Transaction rolled back because it has been marked as - 第512篇

五音不全也浪漫,521清华学霸为爱人写歌 - 第513篇

一文讲清楚SpringBoot项目打包jar后运行报错template might not exist - 第514篇

idea springboot woff/woff2/eot/ttf/svg等小图标不显示的问题 - 第515篇

Noisee AI中文站网页版 AI 音乐生成视频全新登场,快来抢先体验——国内第一个登场的中文站来袭  - 516篇

Spring的SmartLifecycle可以没用过,但没听过就不好了!- 第517篇

SpringBoot异常处理机制之自定义404、500错误提示页面 - 518篇

SpringBoot 中多例模式的神秘世界:用法区别以及应用场景,最后的灵魂拷问会吗?- 第519篇

SpringBoot开发的AI导航站技术架构剖析 —— 技术如何选型 -  第520篇

SpringBoot多例模式,在同一个类中注入两次是否是同一个对象 – 一不小心就会写出一个重大BUG!!- 521篇

SpringBoot基本原理,轻松应对面试官 - 第522篇

Spring Boot实用小技巧 -  - 第523篇

Spring Boot实用小技巧2 - 第524篇

Spring Boot实用小技巧3 - 第525篇

Spring Boot实用小技巧4 - 第526篇

万物皆能舞,AI让你秒变“舞”林高手 – Viggle AI“舞”所不能

法定年龄退休2024年新规,我要到63岁才能退休了,看看你几岁退休,附退休对照表

Suno新上线Covers翻唱新 - 实现音频风格任意转换


http://www.kler.cn/news/316312.html

相关文章:

  • Leetcode面试经典150题-198.打家劫舍
  • 【Git使用】删除Github仓库中的指定文件/文件夹
  • Linux通过yum安装Docker
  • 5G 扬帆新质跃,技术蝶变开新篇-第七届“绽放杯”5G应用征集大赛 5G应用融合技术专题赛圆满收官
  • mysql性能优化-索引优化
  • 一天认识一个硬件之内存条
  • 1688国内店铺装修新版后台 放大效果代码生成1688店铺怎么装修1688平台
  • 通过解预测和机器学习促进蚁群优化
  • 用户态缓存:环形缓冲区(Ring Buffer)
  • Python 中的 Kombu 类库
  • 前端vue压缩静态图片,压缩gif动态图片
  • Anaconda配置pytorch的基本操作
  • Error when custom data is added to Azure OpenAI Service Deployment
  • Python办公自动化教程(001):PDF内容提取
  • Junit与Spring Test简单使用
  • AI量化交易机器人开发
  • docker挂载宿主机文件run命令启动报错
  • 如何选购笔记本电脑?要看哪些参数?
  • C++重生之我是001
  • Flat File端口更新:如何实现嵌套结构
  • keil安装HAL库
  • 计算机网络32——Linux-文件io-2文件系统
  • 《拿下奇怪的前端报错》:nvm不可用报错`GLIBC_2.27‘‘GLIBCXX_3.4.20‘not Found?+ 使用docker构建多个前端项目实践
  • Linux环境Docker安装Mongodb
  • Electron 安装包 asar 解压定位问题实战
  • 深度学习与大模型第5课:利用 NLTK 中的朴素贝叶斯工具解决实际问题:垃圾邮件过滤
  • Java 速刷复习用极简小抄 P1 - Java 概念
  • C++学习笔记(36)
  • C++--C++11(下)
  • 近几年来说最有效率的编程语言和市场最认可的编程语言分别是什么?