1 Spring常用注解
IOC(把bean对象交给spring容器管理)相关的
@Component @Service @Repository(dao注解不常用,有mybatis) @Controller @Configuration 把类的对象交给spring容器管理
@Bean 把方法的对象交给spring容器管理
DI相关的
@Autowired 根据类型注入值
@Qualifier 如果某个接口有多个实现类,需要配合该注解使用@Qualifier("bean的ID")
@Value 设置对应属性的值或对方法进行传参
AOP相关的
@Aspect 设置当前类为切面类
@Pointcut 使用当前方法名作为切入点引用名称
@After
@Before
@Around
事物相关的
@Transactional 设置当前类/接口中所有方法或具体方法开启事务,并指定相关事务属性
(常用属性:propagation = Propagation.事物的传播行为)
集成单元测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
2 SpringMVC常用注解
@Controller
@RequestMapping @GetMapping @PostMapping ..
@RequestBody 如果前端发送的数据类型是application/json 需要使用该注解将前端发送的数据封装到实体类中
@ResponseBody 表示把方法的返回值变成JSON格式响应给客户
@RequestParam 如果表单中的name的值和方法的形参不匹配,需要使用该注解,<input type='text' name="username"> public void method(@RequestParam("username")String name)
@PathVariable 获取路径中的值 @RequestMapping("/{id}")public void method(@PathVariableString id)
@CrossOrigin 跨域
@RestController = @Controller + @ResponseBody
@Validated 加在controller的方法上的形参 public void method(@Validated User user) 表示对前端传过来的数据进行校验
@Valid 加载User的属性上,并且该属性又是一个对象,比如User有一个属性是Address,需要对Address也进行校验,那么在address属性上加该注解即可
下面两个都是在方法的参数中
body和query传参的区别
query是指请求的参数,一般是指URL中?后面的参数
如http://xxxx.com/api/index.html?name=‘aaa’name='aaa’就是querybody是指请求体中的数据
@RequestParam获得请求体中的参数 用于接收各种类型参数 ,也可以获得请求参数query中的参数键值对.一般用于接收表单数据不论get还是post,因为rest风格对于get就是获取,post就是提交有不同的含义,所以post和get都可以往url拼接param字符串.
@RequestBody用于接收string类型的一堆的json数据 一般少的时候用Map<String, String>接收然后String phone = paramMap.get("phone");取,只用于post请求,多的时候用对象接收即可
不推荐使用@RequestParam接收application/json,这时候就需要使用到@RequestBody,这里我有个误区这里的参数不管什么请求都可以用,只看请求中的数据即可。
@RequestHeader请求头
@PathVariable 获得get访问连接path中的数据 @GetMapping("{commentId}/like") 取@PathVariable("commentId") String commentId
postmapping和RequestMapping的区别
@GetMapping
用于将HTTP GET请求映射到特定处理程序方法的注释。具体来说,@GetMapping是一个作为快捷方式的组合注释
@RequestMapping(method = RequestMethod.GET)。
@PostMapping
用于将HTTP POST请求映射到特定处理程序方法的注释。具体来说,@PostMapping是一个作为快捷方式的组合注释@RequestMapping(method = RequestMethod.POST)。
@RequestMapping:
一般情况下都是用@RequestMapping(method=RequestMethod.),因为@RequestMapping可以直接替代以上两个注解,但是以上两个注解并不能替代@RequestMapping,@RequestMapping相当于以上两个注解的父类!
类似的组合注解还有:
@PutMapping、@DeleteMapping、@PatchMapping
总结下来就是@PostMapping和@GetMapping都可以用@RequestMapping代替,如果读者怕在映射的时候出错,可以统一写@RequestMapping,当然这样写的话也有弊端,笼统的全用@RequestMapping, 不便于其他人对代码的阅读和理解!还是建议区分开来写!养成良好的代码习惯!
3 mybatis的常用注解
@Insert:实现新增
@Update:实现更新
@Delete:实现删除
@Select:实现查询
@Result:实现结果集封装
@Results:可以与@Result 一起使用,封装多个结果集
@One:实现一对一结果集封装
@Many:实现一对多结果集封装