SpringBoot常用注解

SpringMVC工作原理

在这里插入图片描述

@RequestMapping
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@RestController
无法返回指定页面

  1. 返回的是输出结果,如JSON,是提供前端获取数据,提交数据
  2. 结合@RequestMapping,@GetMapping,@PostMapping…
    @RestController与@Controller的区别
     @RestController注解等价于@ResponseBody + @Controller。@RestController和@Controller的共同点是都用来表示Spring某个类是否可以接收HTTP请求,二者区别: @RestController无法返回指定页面,而@Controller可以;前者可以直接返回数据,后者需要@ResponseBody辅助。下面详细分析。

① 是否可以返回页面
 答:@RestController无法返回指定页面,而@Controller可以。
  解析:对于Controller, 如果只是使用@RestController注解,则其方法无法返回指定页面,此时配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是 return 里的内容。 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
② 返回内容
  如果需要返回JSON,XML或自定义mediaType内容到页面,@RestController自己就可以搞定,这个注解对于返回数据比较方便,因为它会自动将对象实体转换为JSON格式。而@Controller需要在对应的方法加上@ResponseBody注解。

@GetMapping查询数据
@GetMapping
@GetMapping("{id}")
接受后不去找网页,直接返回数据给浏览器或者其他
@GetMapping
public User get(){
User user = new User();
user.setId(1);
user.setAge(18);
user.setName(“张三”);
user.setSex(“男”);
System.out.println(user);
return user;
}
@GetMapping("{id}")
public User getById(@PathVariable(“id”) int id){
User user = new User();
user.setId(1);
user.setAge(19);
user.setName(“张三”);
user.setSex(“女”);
System.out.println(user);
return user;
}
@PostMapping
新增数据
RequestBody:需要发来一个对象时,参数括号里要加RequestBody配合使用
@PostMapping
public User addUser(@RequestBody User user){
System.out.println(“addUser”+user);
return user;
}
发送一个User对象过来
{
“id”: 5,
“name”: “zzzqh”,
“sex”:“女”,
“age”:18
}
@Controller
1.Controller+RequestMapping+GetMapping
2.yaml文件配置以下内容配合使用
spring:
mvc:
view:
prefix: /
suffix: .html
3.pom.xml引入freemarker
4.yaml文件配置freemarker相关的信息
freemarker:
suffix: .html
template-loader-path: classpath:/static/
5.返回的是页面

@ResponseBody
结合@Controller
@ResponseBody+@Controller=@RestController

URL请求参数:
@RequestParam
接受url中带?后面的参数的
public ModelAndView param(@RequestParam(value = “id”,required = false,defaultValue = “0”) int id,
@RequestParam(value = “type”,required = false)String type){}
http://localhost:8080/param?id=001
在这里插入图片描述

@PathVariable
接受url中/隔开的参数
http://localhost:8080/path/2
@RequestMapping(“path/{id}”)
public ModelAndView path(@PathVariable(required = false) int id){
System.out.println(id);
ModelAndView modelAndView = new ModelAndView(PAGE);
modelAndView.addObject(“id”,id);
return modelAndView;
}

@CrossOrigin
解决跨域问题,一般用过滤器解决,不用注解

@Service
bean注册,跟业务逻辑有关
在接口实现类里面加Service注解,在Controller里加Autowired
@Component
bean注册,组件,跟业务逻辑没有关系

@Autowired
获取bean
@Resource
获取bean
@Autowired+@Qualifier
获取bean
以上三个总结
// @Resource= @Autowired+@Qualifier
//如果接口实现只有一个,用@Autowired就可以了,也不用指定名字
//如果接口有多个实现,那么用 @Resource,并指定name,或者使用 @Autowired+@Qualifier+@Qualifier的value值,建议用@Resource
@Autowired
@Qualifier(“AdminServiceImpl”)
private UserService userService;

@Resource(name = "adminServiceImpl")
private UserService userService1;

@Configuration+@Bean
bean注册(人为)
@Values
从yaml配置文件中取参数
@Value(“${view.page}”)
private String page;

工作中常用的注解
@RestController
@DeleteMapping 删除URL映射
@PutMapping: 和PostMapping作用等同,都是用来向服务器提交信息。如果是添加信息,倾向于用@PostMapping,如果是更新信息,倾向于用@PutMapping。两者差别不是很明显。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华华华华华12138

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值