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