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

异常处理器

@ExceptionHandler注解使用方法

posted @   幻影黑子  阅读(67)  评论(0编辑  收藏  举报
编辑推荐:
· 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_邮件
点击右上角即可分享
微信分享提示