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标识
posted @ 2022-04-14 11:06  雨同我  阅读(17)  评论(0编辑  收藏  举报