1.全局注解
注解 | 说明 |
SpringBootApplication | 组合注解 ,包括@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan |
SpringBootConfiguration | 继承@Configuration,会将当前类内声明一个或多个以@Bean注解标记的方法的实例注入到spring容器中,并且实例名就是方法名 |
EnableAutoConfiguration | springboot自动配置注解,能将所有符合自动配置条件的bean自动加载到spring容器中 |
ComponentScan | 会自动扫描当前包及其子包下被@Component、@Controller、@Service、@Repository等注解标记的类,并注入到spring容器中 |
ConfigurationProperties | 读取自定义properties的方法 |
Configuration | 指出该类似Bean配置的信息源,相当于XML中的,一般加在主类上 |
Bean | 产生一个bean交给spring管理 |
Profiles | 提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效 |
2.控制层注解
注解 | 说明 |
RestController | 是@ResponseBody和@Controller的组合注解,用于标注控制层组件,返回json格式 |
Controller | 标注控制层组件 |
RequestMapping | 一个处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中所有的相应请求都是以该地址作为父路径,衍生出来的还有@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping |
RequestBody | 允许request的参数在request体中,常常结合前端post请求,进行前后端交互 |
ResponseBody | 支持将参数放在request体中,通常返回json格式 |
PathVariable | 用来接收参数 |
RequestParam | 用来接收参数 |
RequestAttribute | 用来访问request中预先存在的属性,等同于request.getAttr() |
ModelAttribute | 主要是绑定请求参数到指定对象上。可被用于方法、参数上 |
这里讲一下@RequsetBody和@ResponseBody的区别
实质上就是request和response的区别
@RequestMapping(/Person/Login)
@ResponseBody //(这里是告诉前端返回的是json类型的数据,不是html页面)
public Person Login(@ResponseBody Person person){ //这里的@ResponseBody 是告诉后端接收的参数是Peson类型的
// 将请求中的 datas 写入 Person 对象中
return person;
}
@PathVariable和@RequestParam的区别
1.用法上:
@PathVariable只能用于接收url路径上的参数,
@RequsetParam只能用于接收请求带的params(只能从request中取值)
看下面两段代码
@GetMapping("/books/{username}")
public Object testPathVariable(@PathVariable String username){
Map<String,Object> map = new HashMap<>();
map.put("username",username);
return map;
}
@PostMapping("/books2")
public Object testRequestParam(@RequestParam("name") String name,
@RequestParam("author") String author,
@RequestParam("isbn") String isbn) {
Map<String, Object> book = new HashMap<String, Object>();
book.put("name", name);
book.put("author", author);
book.put("isbn", isbn);
return book;
}
2.内部参数上
PathVariable有value、name、required(是否允许为空,默认为true)这三个参数
RequsetParam也有这三个参数,除此之外还有defaultValue,默认值这个参数,当requset体中不包含对应的参数变量时,参数变量使用defaultValue指定的默认值
3.PathVariable一般用于get和delete请求
RequestParam一般用于post请求
3.服务/资源层注解
注解 | 说明 |
Component | 泛指组件,当组件不好归类时,使用这个注解进行标注 |
Service | 业务层组件 |
AutoWired | 把配制好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作 |
Qualifier | 当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定,与@Autowired配合使用 |
Resource | 没有括号内容的话,默认byName。与@Autowired干类似的事(不建议使用) |
Repository | 用于标注数据访问组件,即DAO组件 |
Transactional | 事务注解 |
4.AOP注解
注解 | 说明 |
Aspect | 把当前类声明为切面类,切面由切点和增强(引介)组成(可以包含多个切点和多个增强),它既包括了横切逻辑的定义,也包括了连接点的定义,SpringAOP就是负责实施切面的框架,它将切面所定义的横切逻辑织入到切面所指定的链接点中。 |
Pointcut | 指定切入点表达式,切点是一组连接点的集合。AOP通过“切点”定位特定的连接点。通过数据库查询的概念来理解切点和连接点的关系再适合不过了:连接点相当于数据库中的记录,而切点相当于查询条件。 |
Before | 把当前方法看成为前置通知,在目标方法被调用之前做增强处理,@Before只需要指定切入点表达式即可。 |
Around | 把当前方法看成为环绕通知,在目标方法完成前后做增强处理,环绕通知是最重要的通知类型,像事务,日志等都是环绕通知,注意编程中核心是一个ProceedingJoinPoint。 |
After | 把当前方法看成为始终通知,在目标方法完成之后做增强,无论目标方法时候成功完成。@After可以指定一个切入点表达式。 |
AfterReturning | 把当前方法看成为后置通知, 在目标方法正常完成后做增强,@AfterReturning除了指定切入点表达式后,还可以指定一个返回值形参名returning,代表目标方法的返回值。 |
AfterThrowing | 把当前方法看成为异常通知 ,主要用来处理程序中未处理的异常,@AfterThrowing除了指定切入点表达式后,还可以指定一个throwing的返回值形参名,可以通过该形参名来访问目标方法中所抛出的异常对象。 |