springboot常用注释

@SpringBootApplication

标明启动类的注释,也就是标明项目程序入口,实际上集成了非常多的注释

@SpringBootApplication
public class SpringbootApplication {public static void main(String[] args) {SpringApplication.run(SpringbootApplication.class, args);}}

@Data、@AllArgsConstructor、@NoArgsConstructor

这几个都是由Lombok库提供的(可以在idea下载插件,假设用maven管理需要在pom.xml里引入),@Data修饰类会生成getter、setter以及equals()、hashCode()、toString()等方法。@NoArgsConstructor、@RequiredArgsConstructor、@AllArgsConstructor修饰类的话可以制定构造函数,不用自己写了。

@Autowired

自动装配对象的,可以标注在属性上、方法上和构造器上
具体来说,参考了这篇,假设标注在属性上,那么会自动注入Bean对象,默认是按照类型注入的,但假设此时Car为接口,很有可能不止一个类实现了接口,就会报错,Spring并不知道应当引用哪个实现类。可以再加一个@Qualifier(“BMW”)注释,代表是注入BMW实现的Car接口类。

@Service
public class CarFactory
{@Autowiredprivate Car car;public String toString(){return car.carName();}
}

但是官方不推荐在属性上标注@AutoWired,因为类成员的初始化顺序不同,静态成员 ——> 变量初始化为默认值——>构造器——>为变量赋值。如果标注在属性上,则在构造器中就不能使用这个属性(对象)的属性和方法。所以推荐在构造器上标注@AutoWired

@Component、@Controller、@Service、@Repository

这个博文讲的不错,本质上@Controller、@Service、@Repository本质都是@Component,即Spring容器中的一个组件。因为@Controller、@Service、@Repository实际上都被@Component注释了。在Spring源码中,注解会一级一级向上递归搜索,搜索所有的注解信息,即被以上注解注解的类在Spring看来都会包含@Component注解。

  • @Component:通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component
    注解标注。
  • @Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
  • @Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。
  • @Controller : 对应 Spring MVC 控制层,主要用于接受用户请求并调用 Service 层返回数据给前端页面。
// 以下都是简略版代码
@Component
public @interface Controller {@AliasFor(annotation = Component.class)String value() default "";
}@Component
public @interface Service {@AliasFor(annotation = Component.class)String value() default "";
}@Component
public @interface Repository {@AliasFor(annotation = Component.class)String value() default "";
}

那么问题来了,假设都相同的话,那为啥不直接用@Component还要分这么多?

相信做过java web的都知道MVC的概念,都知道一个基于MVC的java web项目一般可以简单划分为:Controller、Service、Dao、Util等,如果给Controller、Service、Dao都使用@Component那么不利于逻辑分层,添加这三个注解的主要目的就是为了逻辑分层,无论开发者给Controller命名为XxxYyyZzz还是AaaBbbCcc,只要注解有@Controller,那么可以理解为祖传代码的意思就是这一块就是Controller层。

@RestController

@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器 bean,并且是将函数的返回值以 JSON 或 XML 形式写入HTTP 响应体(Response)中,以json为多,是 REST 风格的控制器。因为纯@Controller基本不用了,它是对应一个前后端不分离的情况

@Builder

可以简化builder(创建型)设计模式,例如考虑一个 User 类,包含 name、age 和 email 这三个字段。如果我们希望通过 Builder 模式创建 User 对象,那么可以这样做:

import lombok.Builder;
import lombok.ToString;@Builder
@ToString
public class User {private String name;private int age;private String email;
}

然后,我们可以通过下面的方式来创建 User 对象:

User user = User.builder().name("Tom").age(25).email("tom@example.com").build();

可以看出Lombok 生成了一个名为 builder 的静态方法,以及 name,age 和 email 的链式设置方法,最后通过 build 方法来构建 User 对象。

未完待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/828771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

区块链基础——区块链应用架构概览

目录 区块链应用架构概览: 1、区块链技术回顾 1.1、以太坊结点结构 1.2、多种应用场景 2、区块链应用架构概览 2.1、传统的Web2 应用程序架构 2.2、Web3 应用程序架构——最简架构 2.3、Web3 应用程序架构——前端web3.js ether.js 2.4、Web3 应用程序架构—…

react 实现自动创建api 请求文件

需求: 前后端分离的情况下前端要调用后端的接口要写很多接口调用的定义文件很繁琐,切没有意义都是体力劳动 进程: 让后端使用swagger 或者其他的openpai 格式的组件将server 端的接口喷出如果是swagger 的话一般会有一个口子 /v2/api-docs…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之六 简单进行人脸训练与识别 一、简单介绍 二、简单进行人脸训练与识别 1、LBPH…

【MATLAB源码-第198期】基于simulink的三相光伏并网仿真模拟。

操作环境: MATLAB 2022a 1、算法描述 三相光伏并网系统是一种将太阳能转换为电能并将其馈入电网的系统。这个系统通常包括光伏阵列、逆变器(包括其控制算法)、滤波器、电网连接和监控系统。从上载的框图中可以看出,该系统的设计…

【力扣】16. 最接近的三数之和

16. 最接近的三数之和 题目描述 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1: 输入:nums [-1,2,1…

Golang实现一个批量自动化执行树莓派指令的软件(6)简易批量指令处理

简介 基于上篇 Golang实现一个批量自动化执行树莓派指令的软件(5)模块整合, 这里我们实现简单的从配置文件设置指令集, 然后程序自动运行指令集的操作。 环境描述 运行环境: Windows, 基于Golang, 暂时没有使用什么不可跨平台接口…

找不到mfc140.dll如何解决?mfc140.dll丢失的几种解决方法分享

在我们启动并开始利用电脑进行日常工作的过程中,如果遭遇了操作系统提示“mfc140.dll文件丢失”的错误信息,导致某些应用程序无法正常运行,这究竟是何种情况呢?小编将介绍计算机缺失mfc140.dll文件的5种解决方法,帮助大…

java项目:微信小程序基于SSM框架实现的购物系统小程序【源码+数据库+毕业论文+PPT】

一、项目简介 本项目是一套基于SSM框架实现的购物系统小程序 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐…

MATLAB初学者入门(17)—— 爬山算法

爬山算法是一种局部搜索算法,它采用贪心策略来迭代改进问题的解决方案,直到达到局部最优。爬山算法在解决一些优化问题时很有用,尤其是当问题的解空间是离散的,并且我们可以容易地定义“邻居”概念时。 案例分析:使用…

unity学习(91)——云服务器调试——补充catch和if判断

本机局域网没问题,服务器放入云服务器后,会出现异常。 想要找到上面的问题,最简单的方法就是在云服务器上下载一个vs2022! 应该不是大小端的问题! 修改一下readMessage的内容,可以直接粘贴到云服务器的。 …

使用FunASR处理语音识别

FunASR是阿里的一个语音识别工具,比SpeechRecognition功能多安装也很简单; 官方介绍:FunASR是一个基础语音识别工具包,提供多种功能,包括语音识别(ASR)、语音端点检测(VAD&#xff…

DAC音频解码芯片DP7398立体声数模转换芯片

DP7398 Pin TO Pin CS4398和CS43122,同轴光纤DAC解码,支持HIFI播放器。 产品介绍 DP7398 是一个立体声 24 位/1 92kHz 数模转换芯片。 该 D/A 系统包括数字去加重、半分贝步长音量控制、 ATAP I 通道混频、可选择的快速和慢速数字插补滤波器和过采样多位…

使用TensorFlow 2.x实现深度学习模型的完整指南

TensorFlow 2.x 是一个强大的开源软件库,用于数据流编程,广泛应用于各种机器学习和深度学习模型的开发。这里将提供一个使用 TensorFlow 2.x 实现深度学习模型的基本步骤,包括环境设置、模型构建、训练和评估。 ### 步骤 1: 安装 TensorFlow…

AI辅助编码体验

自从自己架设了ai玩了一个月以后,感觉好哇塞 在线的文心一言很棒棒 前几天Llama3出来了,因为不翻墙所以等这两天大家搬家我就把Llama3-8B-Chinese-Chat模型给用上了,简单一试感觉比microsoft_phi-2(好像是7B,大了我这…

【Java数据结构】初步认识ArrayList与顺序表

前言~🥳🎉🎉🎉 hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥&#x…

分布式文件系统--MinIO

1 MinIO安装(Docker) ●在root目录下新建docker_minio文件夹 ●在docker_minio文件夹下新建config文件夹,data文件夹 ●在root目录下新建docker_compose文件夹,在docker_compose文件夹中添加docker-compose.yaml services:minio:image: quay.io/minio/miniocontainer_name: mi…

Vuforia AR篇(三)— AR模型出场效果

目录 前言一、AR模型出场二、AR出场特效三、添加过渡效果四、效果 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 一、AR模型出场 创建ARCamer…

vscode中对 python 快速增加header 描述

在首选项→配置用户代码片段→python 然后再 Code/User/snippets/python.json文件中写入 {// Place your snippets for python here. Each snippet is defined under a snippet name and has a prefix, body and // description. The prefix is what is used to trigger the …

web server apache tomcat11-20-connectors 连接器

前言 整理这个官方翻译的系列,原因是网上大部分的 tomcat 版本比较旧,此版本为 v11 最新的版本。 开源项目 从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎,轻嗅蔷薇。 系列文章 web server apache tomcat11-01-官方文档入门介绍 web…

Three.js——基础材质、深度材质、法向材质、面材质、朗伯材质、Phong材质、着色器材质、直线和虚线、联合材质

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…