news 2026/6/12 21:47:59

springboot我们项目中的常见注解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
springboot我们项目中的常见注解

一、启动与配置类

注解干什么项目里常见位置
@SpringBootApplication启动类,等于@Configuration+@EnableAutoConfiguration+@ComponentScanApplication.java
@Configuration声明配置类config/
@Bean向容器注册对象配置类里
@ConfigurationProperties绑定application.yml配置XxxProperties.java
@EnableConfigurationProperties启用配置属性类配置类 / 启动类
@PropertySource加载额外配置文件少数多环境项目
@Import手动导入配置自定义 starter、多模块
@ConditionalOnProperty按配置开关决定是否生效自动配置、功能开关
@Profile按环境启用(dev/test/prod)配置类、Bean
@SpringBootApplication public class App { ... } @Configuration @ConfigurationProperties(prefix = "app.order") public class OrderProperties { private int timeout; }

二、组件注册(分层最常用)

注解干什么区别
@Component通用组件工具类、通用逻辑
@Service业务层service/
@Repository数据访问层dao/repository/
@Controller传统 MVC 控制器返回页面时用
@RestControllerREST 接口controller/,=@Controller+@ResponseBody

项目里 90% 的分层就是这四个:

Controller → Service → Repository @RestController @Service @Repository

三、依赖注入(天天写)

注解干什么项目建议
@Autowired自动注入老项目很多,3.x 更推荐构造器注入
@Resource按名称注入国内项目很常见
@Qualifier指定注入哪个 Bean同类型多个实现时
@Value注入单个配置值简单配置
@Primary多个实现时默认用这个策略模式、默认数据源
@RestController @RequiredArgsConstructor // Lombok 构造器注入,项目里很常见 public class UserController { private final UserService userService; }

四、Web 接口(Controller 层核心)

注解干什么
@RequestMapping映射路径(类/方法)
@GetMappingGET
@PostMappingPOST
@PutMappingPUT
@DeleteMappingDELETE
@PatchMappingPATCH
@RequestBody接收 JSON 请求体
@RequestParam接收 query 参数?id=1
@PathVariable接收路径参数/user/{id}
@RequestHeader接收请求头
@ResponseBody返回 JSON(@RestController已自带)
@ResponseStatus指定 HTTP 状态码
@CrossOrigin跨域(小项目常用,大项目一般放网关/Security)
@Valid/@Validated开启参数校验
@RestControllerAdvice全局异常处理
@ExceptionHandler处理某类异常
@RestController @RequestMapping("/api/users") public class UserController { @GetMapping("/{id}") public UserDTO get(@PathVariable Long id) { ... } @PostMapping public UserDTO create(@RequestBody @Valid CreateUserReq req) { ... } }

五、参数校验(接口层很常见)

注解干什么
@NotNull不能为 null
@NotBlank字符串不能为空
@NotEmpty集合/数组不能为空
@Size长度限制
@Min/@Max数值范围
@Email邮箱格式
@Pattern正则
public record CreateUserReq( @NotBlank String name, @Email String email ) {}

Spring Boot 3.x 里这些是jakarta.validation,不是javax.validation

六、数据库 / JPA(后台项目极常见)

注解干什么
@Entity实体类
@Table表名
@Id主键
@GeneratedValue主键生成策略
@Column字段映射
@OneToMany/@ManyToOne关联关系
@Transactional事务
@Query自定义 SQL/JPQL
@Modifying更新/删除语句
@EnableJpaRepositories启用 JPA 仓库
@Entity @Table(name = "sys_user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; }
@Service public class UserService { @Transactional(rollbackFor = Exception.class) public void save(User user) { ... } }

七、Spring Security(3.x 项目必备)

注解干什么
@EnableWebSecurity启用 Security
@PreAuthorize方法级权限,如hasRole('ADMIN')
@PostAuthorize方法执行后鉴权
@Secured角色控制(较老)
@PreAuthorize("hasAuthority('user:delete')") @DeleteMapping("/{id}") public void delete(@PathVariable Long id) { ... }

八、定时任务 / 异步

注解干什么
@EnableScheduling开启定时任务
@Scheduledcron / fixedRate 定时执行
@EnableAsync开启异步
@Async异步方法
@Scheduled(cron = "0 0 2 * * ?") public void syncData() { ... } @Async public void sendMail() { ... }

九、缓存 / 消息 / 外部调用

注解干什么
@EnableCaching开启缓存
@Cacheable查询缓存
@CacheEvict删除缓存
@KafkaListener消费 Kafka
@RabbitListener消费 RabbitMQ
@HttpExchange声明式 HTTP 客户端(Boot 3 常用)
@GetExchange/@PostExchange配合@HttpExchange

十、测试类常见

注解干什么
@SpringBootTest启动完整上下文
@WebMvcTest只测 Controller
@DataJpaTest只测 JPA
@MockBean注入 Mock 对象
@Autowired注入测试依赖
@Testcontainers容器化集成测试
@ServiceConnection自动连接测试容器(Boot 3.1+)

十一、一个典型项目里「天天见」的 Top 20

如果只记最常用的,一般是这些:

@SpringBootApplication

@Configuration

@Bean

@Service

@RestController

@Autowired / 构造器注入

@GetMapping / @PostMapping

@RequestBody

@RequestParam

@PathVariable

@Valid

@Transactional

@Entity

@Repository

@Value

@ConfigurationProperties

@RestControllerAdvice

@ExceptionHandler

@Scheduled


十二、按目录对照(方便你对项目结构)

src/main/java/com/xxx/

├── XxxApplication.java @SpringBootApplication

├── controller/ @RestController, @GetMapping...

├── service/ @Service, @Transactional

├── repository/ @Repository 或 JpaRepository 接口

├── entity/ @Entity, @Table, @Id

├── config/ @Configuration, @Bean

├── properties/ @ConfigurationProperties

├── dto/req/ @NotBlank, @Email...

├── exception/ @RestControllerAdvice, @ExceptionHandler

└── job/ @Scheduled


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 21:47:05

STL到STEP格式转换的创新架构方案:实现3D打印与CAD设计无缝衔接

STL到STEP格式转换的创新架构方案:实现3D打印与CAD设计无缝衔接 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在当今数字化设计与制造的工作流中,STL到STEP格式转换已…

作者头像 李华
网站建设 2026/6/12 21:46:05

NSK超重载滚珠丝杠SFT12520性能详解

型号 SFT12520-7.5 属于 sources 中 NSK 的管循环式滚珠丝杠系列。 与您之前查询的同尺寸双列版本(SFT12520-5,静载约 91.7 吨,刚度 2,515 N/m)相比,该型号在维持 125 mm 巨无霸级超究极轴径和 20 mm 高效极速大导程的…

作者头像 李华
网站建设 2026/6/12 21:45:05

恋爱脑自救指南:用依恋理论看清你的情感模式,建立健康亲密关系

恋爱脑自救指南:用依恋理论重塑健康亲密关系当手机屏幕暗下的那一刻,小北第17次查看微信未读消息列表——那个置顶对话框依然安静得像从未存在过。三小时前发送的"晚上想吃什么?"后面跟着的粉色爱心,此刻仿佛变成了某种…

作者头像 李华
网站建设 2026/6/12 21:42:33

G-Helper:华硕笔记本性能调优的终极免费方案

G-Helper:华硕笔记本性能调优的终极免费方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertbook,…

作者头像 李华
网站建设 2026/6/12 21:42:22

NXP IW416芯片:如何解决Wi-Fi与蓝牙共存难题,打造稳定物联网连接

1. 项目概述:为什么需要IW416这样的组合芯片?在智能家居、工业传感器或者医疗监护设备这类项目里摸爬滚打过的工程师,大概都经历过类似的“至暗时刻”:设备明明硬件没问题,软件也跑通了,但一到实际使用场景…

作者头像 李华