SpringBoot开发的AI导航站技术架构剖析 —— 技术如何选型 - 第520篇
SpringBoot多例模式,在同一个类中注入两次是否是同一个对象 – 一不小心就会写出一个重大BUG!!- 521篇
SpringBoot基本原理,轻松应对面试官 - 第522篇
AI发展太快了,早期还只能简单的动作模仿,现在可以踢足球了???
想要了解的可以访问如下地址或者直接扫码请求:
https://dzwlai.com/viggle/#/?i=8NCBS8_WXTT
导读
工作中很多问题很多时候,就是没有找到那个关键点,而那个关键点就在于自己是否有没有掌握一些小技巧。
小技巧在手,再也不用担心领导要让我加班了。今天再和大家分享几个小技巧。
技巧一:使用 Bean生命周期的扩展点:Bean Post Processor
BeanPostProcessor的设计目标主要是提供一种扩展机制,让开发者可以在Spring Bean的初始化阶段进行自定义操作。这种设计理念主要体现了Spring的一种重要原则,即“开放封闭原则”。开放封闭原则强调软件实体(类、模块、函数等等)应该对于扩展是开放的,对于修改是封闭的。在这里,Spring容器对于Bean的创建、初始化、销毁等生命周期进行了管理,但同时开放了BeanPostProcessor这种扩展点,让开发者可以在不修改Spring源码的情况下,实现对Spring Bean生命周期的自定义操作,这种设计理念大大提升了Spring的灵活性和可扩展性。
BeanPostProcessor不是Spring Bean生命周期的一部分,但它是在Spring Bean生命周期中起重要作用的组件。
具体可以用于如下场景:
(1)监控统计 每个环节耗时
(2)利用BeanPostProcessor修改Bean的初始化结果的返回值
(3)通过BeanPostProcessor实现Bean属性的动态修改
技巧二:修改默认DispatcherServlet路径
可以在application.properties加入配置,如:
server.servlet-path=/api/*
另外,也可以注入一个新的ServletRegistrationBean用于映射新的url:
//自动注入spring boot默认的上传配置
private MultipartConfigElement multipartConfigElement;
private DispatcherServlet dispatcherServlet;
public ServletRegistrationBean apiServlet() {
ServletRegistrationBean bean = new ServletRegistrationBean(dispatcherServlet);
//注入上传配置到自己注册的ServletRegistrationBean
bean.addUrlMappings("/api/*");
bean.setMultipartConfig(multipartConfigElement);
bean.setName("apiServlet");
return bean;
}
技巧三:使用 Lombok
作为一名 Java 开发人员,我们可能听说过 Lombok 项目。
Lombok 是一个 Java 库,可用于减少代码并允许我们使用其注释编写干净的代码。
例如,我们可能在某些类(如实体、请求/响应对象、dtos 等)中使用大量的 getter 和 setter 行。
但如果你使用 Lombok,它只是一行,你可以根据你的要求使用@Data、@Getter 或@Setter。
我们也可以使用 Lombok 记录器注释。推荐@Slf4j。
检查此文件以供参考。
技巧四:将构造函数注入与 Lombok 一起使用
当我们谈论依赖注入时,有两种类型。
一种是“构造函数注入”,另一种是“setter 注入”。除此之外,我们还可以使用非常流行的@Autowired 注释来使用“字段注入”。
但我们强烈建议使用构造函数注入而不是其他类型。因为它允许应用程序在初始化时初始化所有必需的依赖项。
这对于单元测试非常有用。
重要的是,我们可以使用 Lombok 的 @RequiredArgsConstructor 注释来使用构造函数注入。
检查此示例控制器以供参考。
技巧五:使用 slf4j 日志
·日志记录非常重要。
·如果我们的应用程序在生产过程中出现问题,日志记录是找出根本原因的唯一方法。
·因此,在添加记录器、日志消息类型、记录器级别和记录器消息之前应该仔细考虑。
·不要使用 System.out.print()
·建议将 Slf4j 与 Spring Boot 中默认的日志框架 logback 一起使用。
·始终使用 slf4j 的 {} 占位符语法,避免在记录器消息中使用字符串插值。因为字符串插值会消耗更多的内存。
·我们可以使用 Lombok @Slf4j 注释非常轻松地创建日志记录器。
·如果我们处于微服务环境中,则可以使用 ELK 技术栈。
Transaction rolled back because it has been marked as - 第512篇
一文讲清楚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篇
万物皆能舞,AI让你秒变“舞”林高手 – Viggle AI“舞”所不能
法定年龄退休2024年新规,我要到63岁才能退休了,看看你几岁退休,附退休对照表