Spring Boot/Spring MVC核心注解深度解析

@Controller 与 @RestController

@Controller用于标记类为Spring MVC控制器,处理HTTP请求并返回视图名称。方法返回值通常配合视图解析器使用,如返回"home"对应home.html。@RestController是@Controller与@ResponseBody的组合,直接返回JSON/XML数据而非视图,适用于RESTful API开发。

@RequestMapping 与衍生注解

@RequestMapping是通用请求映射注解,支持指定路径、方法类型(GET/POST等)、consumes/produces条件。衍生注解包括:

  • @GetMapping:简化GET请求映射
  • @PostMapping:简化POST请求映射
  • @PutMapping:简化PUT请求映射
  • @DeleteMapping:简化DELETE请求映射
  • @PatchMapping:简化PATCH请求映射

示例代码:

@RestController @RequestMapping("/api/users") public class UserController { @GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userService.findById(id); } }

@PathVariable 与 @RequestParam

@PathVariable用于从URI模板中提取变量值,如/users/{id}中的id。@RequestParam用于获取查询参数,支持默认值设置和必填校验:

@GetMapping("/search") public List<User> searchUsers( @RequestParam(required = false, defaultValue = "") String name, @PathVariable String department) { // ... }

@RequestBody 与 @ResponseBody

@RequestBody将HTTP请求体反序列化为Java对象,通常用于POST/PUT请求的JSON/XML数据绑定。@ResponseBody将方法返回值序列化为响应体,在@RestController中默认启用。

@Valid 与校验注解

@Valid触发JSR-380 Bean Validation校验,常与校验注解配合使用:

  • @NotNull:非空校验
  • @Size:字符串/集合长度校验
  • @Email:邮箱格式校验
  • @Pattern:正则校验
@PostMapping public ResponseEntity<User> createUser(@Valid @RequestBody User user) { return ResponseEntity.ok(userService.save(user)); }

@ControllerAdvice 与 @ExceptionHandler

@ControllerAdvice定义全局异常处理类,结合@ExceptionHandler捕获特定异常:

@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(ResourceNotFoundException.class) public ResponseEntity<ErrorResponse> handleNotFound(ResourceNotFoundException ex) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(new ErrorResponse(ex.getMessage())); } }

@Transactional 事务管理

@Transactional声明式事务管理注解,可配置隔离级别、传播行为、超时等属性。Spring Boot默认对RuntimeException回滚:

@Service public class OrderService { @Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED) public Order createOrder(Order order) { return orderRepository.save(order); } }

@Configuration 与 @Bean

@Configuration标记配置类,@Bean声明Spring容器管理的Bean。常用于第三方库集成:

@Configuration public class AppConfig { @Bean public RestTemplate restTemplate() { return new RestTemplateBuilder().build(); } }

@Autowired 与依赖注入

@Autowired自动装配依赖,支持构造函数注入、字段注入、Setter方法注入。Spring推荐使用构造函数注入:

@Service public class UserService { private final UserRepository userRepository; @Autowired public UserService(UserRepository userRepository) { this.userRepository = userRepository; } }

@Profile 环境配置

@Profile根据激活的profile条件化注册Bean,适用于多环境配置:

@Configuration @Profile("dev") public class DevConfig { @Bean public DataSource devDataSource() { return new EmbeddedDatabaseBuilder().setType(H2).build(); } }

@Scheduled 定时任务

@Scheduled配置定时任务执行周期,支持cron表达式、固定延迟等模式:

@Service public class ReportService { @Scheduled(cron = "0 0 9 * * ?") public void generateDailyReport() { // 每天9点执行 } }

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

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

相关文章

【课程设计/毕业设计】基于python卷积神经网络CNN的不同瓶子识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

函数基础:参数和返回类型

函数基础&#xff1a;参数和返回类型 欢迎继续本专栏的第九篇文章。在前几期中&#xff0c;我们已逐步深化了对 TypeScript 类型系统的认识&#xff0c;包括基本类型、特殊类型、枚举、类型断言&#xff0c;以及数组、元组和对象的管理。今天&#xff0c;我们将转向函数这一核心…

揭秘:不用 Conda,Python “光杆司令“ 是如何指挥 GPU 跑大模型的?

写在前面的话 很多刚接触大模型的朋友会有这样的困惑&#xff1a;“我看教程都说要装 Conda&#xff0c;配置虚拟环境。但我直接在系统里的 Python 运行脚本&#xff0c;大模型好像也跑起来了&#xff1f;这时候 Python 到底是怎么跨过 Conda&#xff0c;直接调动我的显卡&…

【毕业设计】通过python-CNN卷积神经网络_pytorch框架对猫的类别识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

箭头函数和 this 绑定

箭头函数和 this 绑定 欢迎继续本专栏的第十篇文章。在前几期中&#xff0c;我们已逐步建立了 TypeScript 函数的基础知识&#xff0c;包括类型签名、参数处理、重载以及返回类型的定义。这些内容为我们理解函数的行为提供了坚实支撑。今天&#xff0c;我们将聚焦于箭头函数这一…

模组无尘系列(Clean Room Series)全解析

TOYO&#xff08;东佑达&#xff09;无尘系列模组专为Class 10&#xff08;ISO 14644-1 标准&#xff09; 洁净室环境设计&#xff0c;通过密封结构优化、真空抽气系统、低发尘材料与润滑三大核心技术&#xff0c;实现运行时发尘量≤10 particles/ft&#xff0c;广泛应用于半导…

【毕业设计】基于python卷积神经网络CNN的不同瓶子识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

戒烟很难?你被大脑骗了

【心智觉醒】别让大脑骗了你:揭开烟瘾底层逻辑的“系统 Bug” 觉醒之门 那个熟悉的“死循环”场景 咱们先聊个几乎每个烟民都经历过的场景 。 周一早上,有个特别重要的项目方案要汇报。你坐在会议室门口,手心里全是汗。这时候,你下意识地溜到楼梯间,掏出火机,“咔哒”一…

【毕业设计】基于python-CNN卷积神经网络对盆栽识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2023元宇宙AI架构师薪资曝光:北上广深需求翻倍,你值多少钱?

2023元宇宙AI架构师薪资全景报告&#xff1a;北上广深需求暴增&#xff0c;你的能力值百万吗&#xff1f; 关键词 元宇宙AI架构师 | 薪资结构 | 需求趋势 | 技能矩阵 | 职业路径 | 价值评估 | 北上广深就业 摘要 2023年&#xff0c;元宇宙与AI的融合进入爆发期&#xff0c;催生…

计算机深度学习毕设实战-通过python-CNN卷积神经网络_pytorch框架对猫的类别识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

PDD流程终止了

周日拒绝PDD&#xff0c;没继续推 这几天一直在思考选择对吗&#xff1f; 会后悔吗&#xff1f; 但也慢慢看淡 心态保持住 一切随缘 有缘再见 等Jinger真的缺钱啦 希望有缘分见面 家里了说的也对 人这一生读完书剩下的大把时间 都是给工作 好像不急着这一下挣钱 其实不去PDD一个…

【课程设计/毕业设计】基于python-CNN卷积神经网络对盆栽识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

内网环境下安装minio

一、环境 Linux版本&#xff1a;CentOS 6. 下载RPM包&#xff1a;minio-20230809233022.0.0.x86_64.rpm 下载地址&#xff1a;[Minio中国镜像加速站](https://dl.minio.org.cn/server/minio/release/linux-amd64/archive/)二、安装 1、创建文件夹&#xff1a;比如 /u1/minio 2、…

基于python卷积神经网络的淡水生物识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

深度学习毕设项目推荐-基于python-CNN卷积神经网络对鸡和兔识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

深度学习计算机毕设之基于python-CNN卷积神经网络对盆栽识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

数据库性能优化全景实践与SQL示例,不改SQL也能提速百倍

在数据库运维和开发中,SQL 慢查询是常见难题。很多人以为必须改写 SQL 才能优化性能,其实不然。通过外围手段(索引、参数、架构等),不改 SQL 也能让查询速度提升百倍甚至千倍。 本文结合 SQL 示例,系统梳理 “不改SQL”优化全景图。 1. 索引优化 —— 最立竿见影的方法 …

事关收入!拿到PMP®证书后,这几件事别忘了做!

&#x1f4a5;注意&#xff01;11月PMP考试成绩已经公布&#xff0c;还没查成绩的小伙伴们抓紧时间查。顺利通过考试的&#xff0c;可以直接在官网上下载电子证书&#xff0c;纸质版证书一般是在6-8个月之后&#xff0c;由官方发布领取公告才能申请邮寄到家。PMP电子证书和纸质…