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的返回值形参名,可以通过该形参名来访问目标方法中所抛出的异常对象。