springboot注解
Controller 相关注解
# @Controller
控制器,处理http请求。
## @RestController 复合注解
```java
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
/**
* The value may indicate a suggestion for a logical component name,
* to be turned into a Spring bean in case of an autodetected component.
* @return the suggested component name, if any (or empty String otherwise)
* @since 4.0.1
*/
@AliasFor(annotation = Controller.class)
String value() default "";
}
```
从源码我们知道,@RestController注解相当于@ResponseBody+@Controller合在一起的作用,RestController使用的效果是将方法返回的对象直接在浏览器上展示成json格式.
## @RequestBody
通过HttpMessageConverter读取Request Body并反序列化为Object(泛指)对象
请求参数获取
## @PathVariable:获取url中的数据
* 请求路径:http://localhost:8080/1/james
* @PathVariable("id")这个id和上面的/{id}/james是一样的,然后获取他里面的值
## @RequestParam:获取请求参数的值
## @RequestBody和@RequestParam
```java
@ApiOperation("发布文章的")
@PostMapping("publish")
public Result publish(@RequestBody ArticleParam articleParam){
return articleService.publish(articleParam);
}
```
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
```java
/**
* 接收普通请求参数
* http://localhost:8080/hello/show16?name=linuxsir
* url参数中的name必须要和@RequestParam("name")一致
* @return
*/
@RequestMapping("show16")
public ModelAndView test16(@RequestParam("name")String name){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello2");
mv.addObject("msg", "接收普通的请求参数:" + name);
return mv;
}
```
主要是获取前端传到后端的参数, @RequestBody是获取请求体里面的参数和@RequestParam区别是一个和多个的问题
自动装配
在自动装配里面,想要注入进来,就需要他的名字和返回值,和<bean id就是他的名字和@Qualifier里面绑定的是一个意思,class是返回值,是他的类型
- 什么这个图片就是自定义的名字,想要使用@Qualifier标识