springboot注解
1、@SpringBootApplication
使当前类成为项目的启动类,使其成为一个springboot应用。
例:
package com.gcz; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author guocz * @date 20210607 * 启动类 */ @SpringBootApplication public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } }
2、@Controller
Spring MVC注解,表示此类用于负责处理Web请求;声明此类是一个MVC类,通常与@RequestMapping一起使用
package com.gcz.ex1.controller; import org.springframework.web.bind.annotation.*; /** * @author guocz * @date 20210607 * 用户信用等级 */ @RestController @RequestMapping("/user") public class UserCreditRestController { @RequestMapping(value = "/credit/{id}") public Integer getCreditLevel(@PathVariable String id){ return Integer.valueOf(id); } }
Spring的Controller方法可以接受多种类型参数:
@PathVariable:可以将URL中的值映射到方法参数中
package com.gcz.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; /** * @author guocz * @date 20210615 * PathVariable使用 */ @Controller @RequestMapping("/user/{id}") public class PathVariableController { @ResponseBody @GetMapping(path = "/{name}/get.json") public String getUserId(@PathVariable Long id, @PathVariable String name){ return id + name; } }
符号{}中的变量名与方法名字一一对应,如果不想对应,如path中的名字是id,方法签名是userId,则可以使用@PathVariable("id") Long userId来对应。
Model:Spring中通用的MVC模型,也可以使用Map和ModelMap作为渲染视图的模型
ModelAndView:包含了模型和视图路径的对象
JavaBean:将HTTP参数映射到JavaBean对象
MultipartFile:用于处理文件上传
@ModelAttribute:使用该注解的变量将作为Model的一个属性;通常作用在Controller的某个方法上,此方法会首先被调用,并将方法结果作为model的属性,然后再调用对应的Controller处理方法
WebRequest或者NativeWebRequest:类似Servlet Request,但做了一定封装
java.io.inputStream和java.io.Reader:用来获取Servlet API中的InputStream/Reader
java.io.OutputStream和java.io.Writer:用来获取Servlet API中的OutputStream/Writer
HttpMethod:枚举类型,对应于HTTP Method,如POST、GET
@MatrixVariable:矩阵变量
@RequestParam:对应于HTTP请求的参数,自动转化为参数对应的类型
@RequestHeader:对应于HTTP请求头参数,自动转化为对应的类型
@RequestBody:自动将请求内容转为指定的对象,默认使用HttpMessageConverters来转化
@RequestPart:用于文件上传,对应于HTTP协议的multipart/form-data
@SessionAttribute:该方法标注的变量来自于Session的属性
@RequestAttribute:该标注的变量来自于request的属性
@InitBinder:用在方法上,说明这个方法会注册多个转化器,用来个性化地将HTTP请求参数转化成对应的Java对象,如转化为日期类型、浮点类型、JavaBean等,当然,也可以实现WebBindingInitializer接口来用于Spring Boot应用所需要的dataBinder
BindingResult和Errors:用来处理绑定过程中的错误
3、@RequestMapping
Spring MVC注解,表示如果请求路径匹配,被注解的方法将被调用
@RequestMapping有多个属性来进一步匹配HTTP请求到Controller方法,分别是:
value:请求的URL的路径,支持URL模板、正则表达式
method:HTTP请求方法,有GET、POST、PUT等
Spring提供了简化后的@RequestMapping,提供了新的注解来表示HTTP方法:@GetMapping;@PostMapping;@PutMapping;@DeleteMapping;@PatchMapping;
consumes:允许的媒体类型(Media Types),如consumes="application/json",对应于请求的HTTP的Content-Type
produces:响应的媒体类型,如produces="application/json",对应于HTTP的Accept字段
params:请求的参数,如params="action=update"
headers:请求的HTTP头的值,如headers="myHeader=myValue"
可以从请求参数或者HTTP头中提取值来进一步确定调用的方法,有以下三种形式:
如果存在参数,则通过;
如果不存在参数,则通过;
如果参数等于一个具体值,则通过;
params:
package com.gcz.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; /** * @author guocz * @date 20210610 * 测试请求参数params调用方法 */ @Controller @RequestMapping("/testParams") public class ParamsTestController { @PostMapping(value = "saveOrUpdate.json", params = "action=save") @ResponseBody public void saveUser(){ System.out.println("call save"); } @PostMapping(value = "saveOrUpdate.json", params = "action=update") @ResponseBody public void updateUser(){ System.out.println("call update"); } }
应用:
header:
package com.gcz.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; /** * @author guocz * @date 20210610 * 测试HTTP头调用方法 */ @Controller @RequestMapping("/testHeader") public class HeaderTestController { @PostMapping(value = "saveOrUpdate.json", headers = "action=save") @ResponseBody public void saveUser(){ System.out.println("call save"); } @PostMapping(value = "saveOrUpdate.json", headers = "action=update") @ResponseBody public void updateUser(){ System.out.println("call update"); } }
应用:
4、@ResponseBody
表示此方法返回的是文本而不是视图名称
例:
package com.gcz.ex1.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author guocz
* @date 20210607
* hello world
*/
@Controller
public class HelloWorldController {
/**
* 返回String类型,默认视图类型,只有加上@ResponseBody才是返回json字符串;
* 建议期望返回JSON,URL请求资源后缀是json;如果期望返回视图,URL请求资源后缀是html
*/
@RequestMapping("/say.json")
public @ResponseBody String say(String name){
return "Hello Spring Boot";
}
}
5、@Service
声明此类是一个业务处理类,通常与@Transactional一起配合使用
6、@Repository
声明此类是一个数据库或者其他NoSQL访问类
7、@RestController
同Controller,用于REST服务
8、@Component
声明此类是一个Spring管理的类,通常用于无法用上述注解描述的Spring管理类
9、@Configuration
声明此类是一个配置类,通常与注解@Bean配合使用
10、@Bean
作用在方法上,声明该方法执行的返回结果是一个Spring容器管理的Bean
11、@Autowired
声明对其他Bean的引用,作用于属性或者构造函数参数,甚至是方法调用参数上
12、@ExceptionHandler
异常处理器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-06-15 springboot_邮件
2020-06-15 java_邮件