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

Java 项目开发常用注解速查表

Java 项目开发常用注解速查表

整理时间:2026-07-10
涵盖:Java 标准注解、Spring/Spring Boot、JPA、校验、Lombok 等


一、Java 标准注解(JDK 内置)

注解作用
@Override表示方法重写了父类方法
@Deprecated标记方法/类已过时,编译器会发出警告
@SuppressWarnings抑制编译器警告
@FunctionalInterface标记函数式接口(Java 8+)
@SafeVarargs抑制可变参数泛型警告

二、Spring 核心注解

2.1 组件声明

注解说明使用场景
@Component通用组件不属于以下三类的普通 Bean
@Service业务逻辑层Service 类
@Repository数据访问层DAO/Mapper 类,自动转换异常
@ControllerWeb 控制器(返回视图)MVC 控制器
@RestControllerREST API 控制器返回 JSON/XML,等价于@Controller + @ResponseBody

2.2 依赖注入

注解说明
@Autowired按类型自动注入(Spring 专属)
@Qualifier("beanName")配合@Autowired按名称注入
@Resource(name="beanName")JSR-250 标准,按名称注入
@Value("${app.name}")注入配置文件中的属性值
@InjectJSR-330 标准,类似@Autowired

2.3 配置类

注解说明
@Configuration声明当前类为配置类
@Bean在配置类中手动声明 Bean
@ComponentScan("com.example")指定组件扫描路径
@Import导入其他配置类
@PropertySource("classpath:app.properties")加载外部属性文件
@ConfigurationProperties(prefix="app")批量绑定配置前缀到 POJO

2.4 Web 请求映射

注解说明
@RequestMapping("/api")通用请求映射(可指定 method)
@GetMapping("/users")GET 请求
@PostMapping("/users")POST 请求
@PutMapping("/users/{id}")PUT 请求
@DeleteMapping("/users/{id}")DELETE 请求
@PatchMapping("/users/{id}")PATCH 请求

2.5 请求参数绑定

注解说明
@RequestParam("name")获取 URL 查询参数?name=xxx
@PathVariable("id")获取 URL 路径参数/users/{id}
@RequestBody获取请求体(JSON → 对象)
@ResponseBody将返回值转为 JSON/XML
@RequestHeader获取请求头
@CookieValue获取 Cookie 值
@ModelAttribute绑定表单数据到对象

2.6 事务与 AOP

注解说明
@Transactional声明式事务管理
@Transactional(readOnly=true)只读事务,优化查询性能
@Aspect声明切面类
@Before/@After/@Around切面通知类型
@Pointcut定义切点表达式

2.7 异常处理

注解说明
@ExceptionHandler(Exception.class)处理特定异常
@ControllerAdvice/@RestControllerAdvice全局异常处理/数据绑定

三、Spring Boot 专用注解

注解说明
@SpringBootApplication组合注解 =@Configuration + @EnableAutoConfiguration + @ComponentScan
@EnableAutoConfiguration启用自动配置
@SpringBootTestSpring Boot 集成测试
@AutoConfigureMockMvc自动配置 MockMvc 用于测试
@TestPropertySource测试时覆盖配置属性
@Profile("dev")指定当前环境配置
@ConditionalOnProperty根据配置属性条件装配
@ConditionalOnClass根据类存在条件装配
@ConditionalOnMissingBean当缺少指定 Bean 时才装配
@EnableCaching开启缓存支持
@EnableAsync开启异步方法支持
@EnableScheduling开启定时任务支持
@Scheduled(cron="0 0 * * * ?")定时任务表达式
@Async异步执行方法
@Cacheable("users")方法结果缓存
@CacheEvict("users")清除缓存

四、JPA / 数据持久层注解

注解说明
@Entity声明 JPA 实体类
@Table(name="t_user")指定数据库表名
@Id声明主键字段
@GeneratedValue(strategy=GenerationType.IDENTITY)主键生成策略
@Column(name="user_name", nullable=false)字段映射配置
@Transient字段不持久化到数据库
@Temporal(TemporalType.TIMESTAMP)日期类型映射
@Enumerated(EnumType.STRING)枚举映射为字符串
@OneToOne/@OneToMany/@ManyToOne/@ManyToMany关联映射
@JoinColumn(name="dept_id")外键关联字段
@MappedSuperclass父类映射,子类继承字段

主键生成策略

策略说明
GenerationType.AUTO自动选择
GenerationType.IDENTITY数据库自增(MySQL)
GenerationType.SEQUENCE数据库序列(Oracle/PostgreSQL)
GenerationType.TABLE使用序列表
GenerationType.UUIDUUID 生成

五、Bean Validation 数据校验注解

注解说明示例
@NotNull值不能为 null@NotNull private String name;
@NotEmpty不能为 null 且长度 > 0(集合/字符串)@NotEmpty private List<String> list;
@NotBlank不能为 null 且去除空白后长度 > 0@NotBlank private String name;
@Size(min=2, max=20)长度/大小范围@Size(min=2, max=20) private String name;
@Min(1)/@Max(100)数值范围@Min(1) private int age;
@Positive/@Negative正数 / 负数@Positive private BigDecimal price;
@PositiveOrZero/@NegativeOrZero非负 / 非正
@DecimalMin("0.01")/@DecimalMax("999.99")小数范围
@Digits(integer=5, fraction=2)整数位和小数位限制
@Pattern(regexp="^[a-zA-Z0-9]+$")正则匹配
@Email邮箱格式校验@Email private String email;
@Future/@Past未来 / 过去日期@Future private Date expireDate;
@AssertTrue/@AssertFalse必须为 true / false
@Valid级联校验嵌套对象@Valid private Address address;

校验使用方式

// Controller 层触发校验@PostMapping("/users")publicResponseEntity<?>createUser(@Valid@RequestBodyUserDTOuser){// ...}// 分组校验publicResponseEntity<?>updateUser(@Validated(UpdateGroup.class)@RequestBodyUserDTOuser){// ...}

六、Lombok 注解(减少样板代码)

注解说明
@Data组合注解 =@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor
@Getter/@Setter自动生成 getter/setter
@ToString自动生成 toString
@EqualsAndHashCode自动生成 equals 和 hashCode
@NoArgsConstructor无参构造器
@AllArgsConstructor全参构造器
@RequiredArgsConstructor为 final 字段生成构造器
@Builder建造者模式
@Slf4j自动生成private static final Logger log
@Log4j2使用 Log4j2
@Value不可变对象(final + getter,无 setter)
@NonNull参数/字段非空校验
@Cleanup自动关闭资源(try-with-resources)
@SneakyThrows隐式抛出受检异常

七、Spring Security 安全注解

注解说明
@EnableWebSecurity启用 Web 安全配置
@PreAuthorize("hasRole('ADMIN')")方法执行前权限校验
@PostAuthorize("returnObject.owner == authentication.name")方法执行后权限校验
@Secured("ROLE_ADMIN")基于角色的方法安全
@RolesAllowed("ADMIN")JSR-250 标准角色控制
@PermitAll/@DenyAll允许/拒绝所有访问
@AuthenticationPrincipal获取当前认证用户
@EnableGlobalMethodSecurity(prePostEnabled=true)启用方法级安全注解

八、Swagger / OpenAPI 文档注解

SpringDoc OpenAPI 3(推荐)

注解说明
@Tag(name="用户管理", description="用户相关接口")API 分组标签
@Operation(summary="获取用户", description="根据ID获取用户信息")接口说明
@Parameter(name="id", description="用户ID")参数说明
@ApiResponse(responseCode="200", description="成功")响应说明
@Schema(description="用户实体", example="{}")模型描述
@Hidden隐藏该接口/字段

Swagger 2(旧版)

注解说明
@Api(tags="用户管理")控制器描述
@ApiOperation("获取用户")接口描述
@ApiParam("用户ID")参数描述
@ApiModel("用户实体")模型描述
@ApiModelProperty("用户名")属性描述
@ApiIgnore忽略该接口

九、测试相关注解

注解说明
@SpringBootTest加载完整 Spring 上下文测试
@WebMvcTest(Controller.class)仅测试 Web 层
@DataJpaTest仅测试 JPA 层
@MockBean创建 Mock Bean 替换真实 Bean
@SpyBean创建 Spy Bean
@AutoConfigureMockMvc自动配置 MockMvc
@Test(JUnit 5)测试方法
@BeforeEach/@AfterEach每个测试前后执行
@BeforeAll/@AfterAll所有测试前后执行(需 static)
@DisplayName("描述")测试显示名称
@ParameterizedTest参数化测试
@ValueSource(strings={"a","b"})参数来源
@Disabled禁用测试

十、其他常用注解

注解来源说明
@CrossOrigin(origins="*")Spring跨域配置
@RequestScope/@SessionScopeSpring请求/会话作用域
@LazySpring延迟初始化
@PrimarySpring优先使用该 Bean
@Order(1)Spring指定执行顺序
@EventListenerSpring监听应用事件
@RetryableSpring Retry方法失败时重试
@RecoverSpring Retry重试耗尽后的恢复方法
@Timed/@CountedMicrometer指标监控
@KafkaListenerSpring KafkaKafka 消息监听
@RabbitListenerSpring AMQPRabbitMQ 消息监听
@FeignClient("service-name")OpenFeign声明式 HTTP 客户端
@LoadBalancedSpring Cloud负载均衡 RestTemplate
@EnableCircuitBreakerSpring Cloud启用熔断器
@HystrixCommandHystrix熔断降级
@SentinelResourceAlibaba Sentinel流量控制
@DubboService/@DubboReferenceApache DubboDubbo 服务暴露/引用

附录:快速记忆口诀

组件三层:Service、Repository、Controller 注入三种:Autowired、Resource、Inject Web 映射:Get/Post/Put/Delete/Patch 参数绑定:Param、PathVariable、RequestBody 事务管理:Transactional 校验非空:NotNull、NotEmpty、NotBlank Lombok 神器:Data、Slf4j、Builder Boot 入口:SpringBootApplication

本文档持续更新,建议结合官方文档使用。

http://www.jsqmd.com/news/1164640/

相关文章:

  • Flink
  • 数据清洗的常用方法
  • Midjourney 3D建模级输出落地全链路(从线稿到PBR材质渲染的7步工业级工作流)
  • 计算机组成原理 ALU 设计:从 1 位全加器到 32 位并行加法器的 5 步演进
  • SpringBoot集成LangChain4j构建企业级AI Agent工程实践
  • SpringBoot开发中那些容易忽略的配置细节
  • OpenMV Cam H7 GPIO 实战:5V 容错与 25mA 驱动能力实测,3 种模式详解
  • NMOS/PMOS 高边/低边驱动电路:3种典型拓扑与5个选型关键参数
  • 初入车联网那些事【纯文字】
  • Sunny 网络中间件 v3.1.0 实战:5步实现HTTP/HTTPS/WS/WSS/TCP全协议拦截与修改
  • 用 MCP 协议 + x402 微支付构建 47 端点 AI 工具聚合服务
  • Sugar BI 智能问数实战:5类典型业务提问模板与图表生成效果解析
  • 小模型主动查记忆 NapMem 思路
  • TeraSort 和 AI
  • 【Azure Container Apps】Readiness Probe 配置了 15 秒,为什么日志里仍显示 1 秒超时?
  • Flink 1.13 连接 Kafka 3.7.2:配置 SASL_SSL 认证的 5 个关键步骤
  • UE5动画叠加避坑指南:Additive动画类型与骨骼空间设置详解
  • MATLAB R2025a深度解析:仿真加速、跨平台可视化与AI工作流重构
  • 视频矩阵采购避坑指南:参数虚标识别与贴牌厂家区分实用方法
  • 亲身到店探访南京泰格豪雅官方售后服务中心|全部网点地址电话(2026年7月最新) - 亨得利官方服务中心
  • Vibe Coding企业级实战:基于ZCode与GLM5.2的AI工程化编程全流程
  • 2026年7月最新福州雅典官方售后客户服务热线与维修网点地址汇总 - 亨得利官方服务中心
  • 2026年天津武清挖掘机租赁响应保障推荐 元晶市政重型机队随调随到 - 本地品牌推荐
  • 大模型可信度评估框架:事实锚定、指令鲁棒与安全边界的三重压力测试
  • 企业级AI Agent云原生架构:基于AWS Bedrock的多租户部署与Token成本治理
  • 软考中级 vs 高级:3维度深度对比与 2类考生报考决策指南
  • Covfefe靶场缓冲区溢出提权分析:gets函数漏洞与20字节buf数组利用
  • OpenClaw本地部署全解析:从认知纠偏到飞书深度集成
  • ToDesk 远控 Ubuntu 错误:您需自行安装X11桌面环境
  • yolo darknet的启示(突破6bn+2residual,cudnn实现CBL)