springboot常用注解

1.@SpringBootApplication

这个注解是Spring Boot 最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用启动类。
这个注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。由于这些注解一般都是一起使用,所以Spring Boot提供了一个统一的注解@SpringBootApplication。

2.@MapperScan

是扫描mapper类的注解

3.@ComponentScan

@ComponentScan是组件扫描注解,用来扫描@Controller @Service @Repository这类,主要就是定义扫描的路径从中找出标志了需要装配的类到Spring容器中

4.@RestController

相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面。
@Controller :视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面。
@ResponseBody:表示方法的返回值直接以指定的格式写入Http response body中,而不是解析为跳转路径,作用其实是将java对象转为json格式的数据。
如果要求方法返回的是json格式数据,而不是跳转页面,可以直接在类上标注@RestController。

5.@Service

用于标注业务层组件。

6.@Repository

用于标注数据访问组件,即DAO组件。

7.@Component

泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

8.@Configuration

指出该类是 Bean 配置的信息源,相当于XML中的,一般加在主类上。

9.@AutoWired

一般是注入业务接口

10.@RequestMapping详解

RequestMapping是一个用来处理请求地址映射的注解,一般放在控制层。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
RequestMapping接口的源码如下,里面定义了八个属性

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
    String name() default ""; //相当于方法的注释,使方法更易理解

    @AliasFor("path")
    String[] value() default {};//指定请求路径的地址

    @AliasFor("value")
    String[] path() default {};//指定请求路径的地址
	// 指定请求的方式,是一个RequsetMethod数组,可以配置多个方法,get/post/put/delete
    RequestMethod[] method() default {};

    String[] params() default {};// 指定参数的类型

    String[] headers() default {};//指定请求头内容

    String[] consumes() default {};//指定数据请求的格式

    String[] produces() default {};// 指定返回的内容类型

}

可以看到注解中的属性除了 name() 返回的字符串,其它的方法均返回数组,也就是可以定义多个属性值,例如 value() 和 path() 都可以同时定义多个字符串值来接收多个URL请求。

1、name

此处name属性,相当于方法的注释,使方法更易理解

@RestController
@RequestMapping("/test")
public class BookController {
    @Autowired
    BookService bookService;

    @RequestMapping(value = "/book", name="查询书本")
    public List<Book> getItems(){
        return bookService.getBookList();
    }
2、value/path

value:由于value属性是@RequestMapping注释的默认属性,因此如果只有唯一的属性,则可以省略该属性名,如果有超过一个属性,则必须写上value属性名称。即如下两个标注含义一样

@RequestMapping(value = "/book")
@RequestMapping( "/book")

value/path属性支持通配符匹配

@RequestMapping(value = "/book/*")

path:与value同义,path(value)(path 和 value 互相引用,参见RequestMapping接口源码)
path属性,和1中的value属性使用一致,两者都是用来作为映射使用的。

@RequestMapping(value = "/book")
@RequestMapping(path = "/book")
3、method(GET、POST、PUT、DELETE)

只支持post请求

  @RequestMapping(value = "/book", method=RequestMethod.POST)
    public List<Book> getItems(){
        return bookService.getBookList();
    }

同时支持post和get请求(多个用花括号和逗号隔开)

  @RequestMapping(value = "/book", method={RequestMethod.POST,RequestMethod.GET})
    public List<Book> getItems(){
        return bookService.getBookList();
    }

如果没有method属性,则说明该方法支持全部的HTTP请求

4、params

该属性指定,请求中必须包含params属性规定的参数时,才能执行该请求

 @RequestMapping(value = "/book", params = "flag",method={RequestMethod.POST,RequestMethod.GET})
    public List<Book> getItems(){
        return bookService.getBookList();
    }

http://localhost:8091/test/book?flag=xxx 正常访问
http://localhost:8091/test/book 无法访问

5、headers

该属性指定,请求中必须包含某些指定的header值,才能够让该方法处理请求

  @RequestMapping(value = "/book",headers = "code=A01")
    public List<Book> getItems(){
        return bookService.getBookList();
    }

在这里插入图片描述
必须满足请求的header中包含了指定的"code"请求头和值为"A01"时,才能执行该请求。

6、consumes

指定处理请求的提交内容类型(Content-Type),例如:application/json、text/html时还可以指定提交编码charset=UTF-8,才能够让该方法处理请求

 @RequestMapping(value = "/api/wechat/tApplyRecord/add", method = RequestMethod.POST,
            consumes = "application/json;charset=UTF-8"
    )
7、produces

指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型

@PostMapping(value = "/queryPositionPermissions", produces = "text/plain;charset=utf-8")

参考:https://blog.csdn.net/qq_39390545/article/details/117928748?spm=1001.2014.3001.5501

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值