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

java开发常用注解

在Java开发中,注解(Annotation)广泛用于简化代码、配置元数据、框架集成等场景。以下是不同场景下常用的注解分类整理:


一、核心Java注解(内置)

  1. @Override 表示方法重写父类或接口的方法,编译器会检查方法签名是否正确。

  2. @Deprecated 标记类、方法或字段已过时,使用时编译器会生成警告。

  3. @SuppressWarnings 抑制编译器警告(如"unchecked""deprecation")。

  4. @SafeVarargs 用于抑制泛型可变参数(varargs)的类型安全警告。

  5. @FunctionalInterface 标记接口为函数式接口(仅允许一个抽象方法)。


二、Spring框架注解

核心与依赖注入
  1. @Component 标记为Spring管理的通用组件。

  2. @Service 标记业务逻辑层(Service层)组件。

  3. @Repository 标记数据访问层(DAO层)组件,自动处理数据库异常。

  4. @Controller / @RestController 标记Web控制器(@RestController返回JSON)。

  5. @Autowired 自动注入依赖(推荐改用构造器注入,但注解仍常见)。

  6. @Qualifier 指定注入的Bean名称,解决多个同类型Bean的冲突。

  7. @Value 注入配置文件中的属性值(如@Value("${app.name}"))。

Web与REST API
  1. @RequestMapping 定义请求映射路径(可细分为@GetMapping, @PostMapping等)。

  2. @PathVariable 从URL路径中获取参数(如/user/{id})。

  3. @RequestParam 从请求参数中获取值(如/user?name=John)。

  4. @RequestBody 将HTTP请求体反序列化为Java对象(如JSON → DTO)。

  5. @ResponseBody 将方法返回值序列化为HTTP响应体(如返回JSON)。

配置与AOP
  1. @Configuration 标记类为配置类,定义Bean。

  2. @Bean 在配置类中声明方法返回的Bean。

  3. @Profile 指定Bean在特定环境下生效(如@Profile("dev"))。

  4. @Transactional 声明事务管理(方法或类级别)。

  5. @Aspect 定义切面类,结合@Before, @After等实现AOP。


三、JPA/Hibernate(数据库)

  1. @Entity 标记类对应数据库表。

  2. @Table 指定表名(如@Table(name = "users"))。

  3. @Id 标记主键字段。

  4. @GeneratedValue 配置主键生成策略(如自增、UUID)。

  5. @Column 定义字段与列的映射(如@Column(name = "user_name"))。

  6. @OneToMany / @ManyToOne 定义实体间的一对多、多对一关系。

  7. @Query 在Repository中自定义JPQL或原生SQL查询。


四、Lombok注解(简化代码)

  1. @Data 自动生成Getter/Setter、equals()hashCode()toString()

  2. @Getter / @Setter 单独生成Getter或Setter方法。

  3. @NoArgsConstructor / @AllArgsConstructor 生成无参构造器和全参构造器。

  4. @Builder 提供Builder模式支持。

  5. @Slf4j 自动生成日志对象(如log.info())。


五、测试相关

  1. JUnit 5

    • @Test: 标记测试方法。

    • @BeforeEach / @AfterEach: 每个测试前后的操作。

    • @Mock / @InjectMocks(Mockito): 模拟依赖注入。

  2. Spring Boot Test

    • @SpringBootTest: 启动完整Spring上下文测试。

    • @MockBean: 模拟并替换Spring上下文中的Bean。


六、其他常用注解

  1. Jackson(JSON序列化)

    • @JsonProperty: 指定JSON字段名。

    • @JsonIgnore: 忽略字段序列化。

  2. Swagger(API文档)

    • @ApiOperation: 描述API接口功能。

    • @ApiParam: 描述接口参数。

  3. Spring Boot

    • @SpringBootApplication: 主启动类注解(组合了@Configuration@ComponentScan等)。

    • @EnableScheduling: 启用定时任务。


示例代码片段

// Spring Boot + JPA 示例
@RestController
@RequestMapping("/api/users")
public class UserController {@Autowiredprivate UserService userService;
​@GetMapping("/{id}")public User getUser(@PathVariable Long id) {return userService.findById(id);}
}
​
// Lombok 简化实体类
@Data
@Entity
@Table(name = "users")
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(name = "user_name")private String username;
}

这些注解能显著提升开发效率,具体使用需结合项目框架和需求调整。

相关文章:

java开发常用注解

在Java开发中,注解(Annotation)广泛用于简化代码、配置元数据、框架集成等场景。以下是不同场景下常用的注解分类整理: 一、核心Java注解(内置) Override 表示方法重写父类或接口的方法,编译器会…...

Doris vs ClickHouse 企业级实时分析引擎怎么选?

Apache Doris 与 ClickHouse 同作为OLAP领域的佼佼者,在企业级实时分析引擎该如何选择呢。本文将详细介绍 Doris 的优势,并通过直观对比展示两者的关键差异,同时分享一个企业成功用 Doris 替换 ClickHouse 的实践案例,帮助您做出明…...

解锁Egg.js:从Node.js小白到Web开发高手的进阶之路

一、Egg.js 是什么 在当今的 Web 开发领域,Node.js 凭借其事件驱动、非阻塞 I/O 的模型,在构建高性能、可扩展的网络应用方面展现出独特的优势 ,受到了广大开发者的青睐。它让 JavaScript 不仅局限于前端,还能在服务器端大展身手&…...

学习前端前需要了解的一些概念(详细版)

网站的定义与概述 网站(Website)是一个由网络服务器托管的、通过网络访问的、由相关网页和资源组成的集合。它为用户提供信息、服务或娱乐平台,是现代互联网的重要组成部分。网站的基本功能是展示信息和提供服务,用户可以通过浏览…...

分布式数据库中的四种透明性:逻辑透明、位置透明、分片透明和复制透明

四种透明性 1. 逻辑透明(Logical Transparency)2. 位置透明(Location Transparency)3. 分片透明(Fragmentation Transparency)4. 复制透明(Replication Transparency)注意点&#xf…...

SSM架构 +java后台 实现rtsp流转hls流,在前端html上实现视频播放

序言:书接上文,我们继续 SSM架构 NginxFFmpeg实现rtsp流转hls流,在前端html上实现视频播放 步骤一:把rtsp流转化为hls流,用Java代码进行转换 package com.tools;import java.io.BufferedReader; import java.io.IOExc…...

时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍

化工行业在数字化转型过程中面临数据接入复杂、实时性要求高、系统集成难度大等诸多挑战。福州力川数码科技有限公司科技依托深厚的行业积累,精准聚焦行业痛点,并携手 TDengine 提供高效解决方案。通过应用 TDengine,力川科技助力化工企业实现…...

信号完整性基础:高速信号的扩频时钟SSC测试

扩频时钟 SSC 是 Spread Spectrum Clock 的英文缩写,目前很多数字电路芯片都支持 SSC 功能,如:PCIE、USB3.0、SATA 等等。那么扩频时钟是用来做什么的呢? SSC背景: 扩频时钟是出于解决电磁干扰(EMI&#…...

深入理解与配置 Nginx TCP 日志输出

一、背景介绍 在现代网络架构中,Nginx 作为一款高性能的 Web 服务器和反向代理服务器,广泛应用于各种场景。除了对 HTTP/HTTPS 协议的出色支持,Nginx 从 1.9.0 版本开始引入了对 TCP 和 UDP 协议的代理功能,这使得它在处理数据库…...

Java为什么是跨平台的

一、Java虚拟机(JVM)的抽象层作用 JVAM是Java跨平台的核心技术。Java代码编译后生成字节码(.class文件),这些字节码并非直接由操作系统执行,而是由JVM解释或编译为特定平台的机器码。 屏蔽底层差异:JVM为不同操作系统提供统一的运行时环境,开…...

Sora与AGI的结合:从多模态模型到智能体推理的演进

全文目录: 开篇语前言前言:AGI的挑战与Sora的突破Sora的多模态学习架构:支撑智能体推理的基础1. **多模态学习的核心:信息融合与交叉理解**2. **智能体推理:从感知到决策** Sora如何推动AGI的发展:自主学习…...

一个针对煤炭市场的人工智能项目的开发示例

以下是一个针对煤炭市场的人工智能项目的开发示例,此项目将涵盖数据收集、数据预处理、模型构建、模型训练和预测等步骤。这里我们以预测煤炭价格为例,使用 Python 语言结合常见的机器学习库(如pandas、scikit - learn)来完成。 …...

QILSTE H6-S115FOKYG高亮橙光和黄绿光LED灯珠

型号:H6-S115FOKYG --- 在众多电子元件中,H6-S115FOKYG型号的LED以其独特的性能脱颖而出。这款产品采用了高亮橙光和黄绿光两种颜色,尺寸仅为1.6x1.5x0.55mm,却蕴含着强大的光电性能。其透明平面胶体设计,不仅美观&a…...

EasyDSS视频推拉流/直播点播平台:Mysql数据库接口报错502处理方法

视频推拉流/视频直播点播EasyDSS互联网直播平台支持一站式的上传、转码、直播、回放、嵌入、分享功能,具有多屏播放、自由组合、接口丰富等特点。平台可以为用户提供专业、稳定的直播推流、转码、分发和播放服务,全面满足超低延迟、超高画质、超大并发访…...

测试直播postman+Jenkins所学

接口自动化 什么是接口?本质上就是一个url,用于提供数据。后台程序提供一种数据地址,接口的数据一般是从数据库中查出来的。 postman自动化实操: 一般来说公司会给接口文档,如果没有,通过拦截&#xff0c…...

上线DeepSeek大模型,黄山“大位”智算中心正式点亮

2月28日,智启黄山,算领未来——黄山“大位”智算中心点亮仪式在黄山市大位人工智能计算中心举行,标志着黄山“大位”智算中心正式投入运营。同日,DeepSeek-R1大模型在黄山“大位”正式上线,通过“顶尖大模型普惠算力底…...

计算机毕业设计SpringBoot+Vue.js医院药品管理系统(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

Linux安装nvm和node

执行curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash命令下载安装nvm 执行 source ~/.bashrc命令重新加载shell配置文件以使NVM生效 执行nvm ls-remote 查看可用node版本 如果确定版本,可以直接执行npm install 版本号&#xff0…...

HarmonyOS Next元服务网络请求封装实践

【HarmonyOS Next实战】元服务网络通信涅槃:深度封装如何实现80%性能跃升与零异常突破 ————从架构设计到工程落地的全链路优化指南 一、架构设计全景 1.1 分层架构模型 #mermaid-svg-VOia4RMx7iqmLnu7 {font-family:"trebuchet ms",verdana,arial,…...

网络编程-----服务器(多路复用IO 和 TCP并发模型)

一、单循环服务器模型 1. 核心特征 while(1){newfd accept();recv();close(newfd);}2. 典型应用场景 HTTP短连接服务&#xff08;早期Apache&#xff09;CGI快速处理简单测试服务器 3. 综合代码 #include <stdio.h> #include <sys/types.h> /* See NO…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...