Spring Boot 实战(1)
1.spring-boot-starter-web
1.1 @Controller与@RestController
作用:通过WebApplicationContext自动注册bean让spring container管理。
区别:它本身是由 @Controller 和 @ResponseBody 组成的元注解,表示一个controller的每个方法都继承了类型级的 @ResponseBody 注解,因此,直接写入响应体,而不是用HTML模板进行视图解析和渲染。
1.2 @RequestMapping与@GetMapping与@PostMapping等
作用:将http请求映射到controller方法。还可以配置请求头,参数,cotent-type等属性。
1.3 @RequestParam、@RequestBody和Multipart
作用:@RequestParam绑定get或post请求参数到指定注解。@RequsetBody序列化请求体绑定对于注解的对象。Mutipart接受带有 multipart/form-data
的POST请求的内容被解析并作为常规请求参数访问。
1.4 @ResponseBody
作用:通过 HttpMessageConverter 将返回序列化为响应体。
2.spring boot-starter-validation
2.1 @Valid & @Validated
作用:标记一个属性,方法参数或方法返回值类型为验证传递。
区别:@Validated为变体支持spring自定义的约束。
3.spring-boot-starter-aop
3.1 @EnableAspectJutoProxy
作用:配置Spring AOP的自动代理
注意:无需使用,spring boot自动
3.2 @Aspect
作用:定义一个切面,会被Spring自动检测。
注意:切面之间不能成为advice的目录。
3.3 @Pointcut
作用:定义一个切入点。
注意:仅支持spring bean的切入。
3.4 @Befor、@After、@Aroud
作用:定义织入位置。
3.5 例子

/** * 定义切入点 */ @Pointcut("execution(* com.uaichong.app.controller.AccessTokenController.testRefresh2(..))") public void anyOldTransfer() {} /** * 注解匹配方式 * @param joinPoint 切入点 * @return Object */ @Around("@annotation(com.*.app.annotation.Check)") public Object anyOldTransfer2(ProceedingJoinPoint joinPoint) throws Throwable { Object[] values = joinPoint.getArgs(); System.out.println(joinPoint.getThis()); System.out.println(joinPoint.getTarget()); System.out.println(joinPoint.getSignature()); System.out.println(joinPoint); for (Object o: values) { System.out.println(o); } System.out.println("this is check"); return joinPoint.proceed(); } /** * 指定point点 */ @Before("com.uaichong.app.aop.NotVeryUsefulAspect.anyOldTransfer()") public void testByTransfer() { System.out.println("pointcut is testing"); }
引用参考:
https://docs.spring.io/spring-boot/
https://springdoc.cn/docs/
https://beanvalidation.org/3.0/
https://hibernate.org/validator/
https://eclipse.dev/aspectj/doc/released/adk15notebook/index.html
https://dev.java/learn/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!