1 元注解
1.1. @Target(用来约束注解应用的范围)
1.2. @Retention(用来约束注解的生命周期)
@Retention用来约束注解的生命周期,分别有三个值,源码级别(source),类文件级别(class)或者运行时级别(runtime),其含有如下:
SOURCE:注解将被编译器丢弃(该类型的注解信息只会保留在源码里,源码经过编译后,注解信息会被丢弃,不会保留在编译好的class文件里)
CLASS:注解在class文件中可用,但会被VM丢弃(该类型的注解信息会保留在源码里和class文件里,在执行的时候,不会加载到虚拟机中),请注意,当注解未定义Retention值时,默认值是CLASS,如Java内置注解,@Override、@Deprecated、@SuppressWarnning等
RUNTIME:注解信息将在运行期(JVM)也保留,因此可以通过反射机制读取注解的信息(源码、class文件和执行的时候都有注解的信息),如SpringMvc中的@Controller、@Autowired、@RequestMapping等。
2 Spring BOOT
2.1. @Controller,控制器组件
表示该类是Controller层:讲该类交给spring管理,接收客户端请求
2.2. @RestController
@RestController=@Controller+@ResponseBody(响应体)
@RequestBody请求体
作用:1)将该类交给spring容器管理
2)SpringMVC负责调用该对象接收用户请求
3)将业务处理之后,为页面返回JSON串
@RespinseBoy作用:将数据转化JSON串
2.3. @RequestMapping
可以接受全部请求
2.3.1. @GetMapping
只能接受get的请求类型
2.3.2. @PostMapping
只能接受post的请求类型
2.3.3. @PutMapping
只能接受Put的请求类型
2.3.4. @DeleteMapping
只能接受Delete的请求类型
2.4. @Value("${mysql.username}")
在spring容器中获取值
${mysql.username}:Spring提供的springel语法,简称:spel表达式
作用:从spring容器内部获取key,可以动态为属性赋值
2.5. @Server业务层组件
2.5.1. @Async
使用背景:在收集用户行为日志功能上,为了增加用户体验,需要让收集日志的线程异步执行。
使用前提:需要在启动类上启动异步执行
@Async 描述的方法底层会异步执行
不由web服务线程执行,交给spring自带的线程池去执行
优点:不会长时间阻塞web服务(例如tomcat)线程
3 Spring
第一组创建springBean方法:
3.1. @Configuration
告诉spring这是一个配置类
3.2. @Bean
告诉spring在启动的时候,加载被@Bean标注的方法,返回值是spring创建的对象,方法名是Bean的ID
第二组创建SpringBean方法
3.3. @Component,通用组件
@Component注解为通用组件,@Controller,@service,以及mapper组件都是一样的,只是这三个标识功能不同的Bean罢了。
Spring在组件扫描的时候会找到标注@Component的类,
将该类创建的对象交给Ioc容器管理,Bean Id为:类名首字母小写
3.4. @Scope(“prototype”)原型Bean 默认单例Bean
3.5. @Autowired(自动注入)
使用接口进行解耦的时候,接口两个实现类不能同时注入,如果想要同时注入需要加
@Qualifier(”名字“)给注入的属性取一个名字
3.6. @Aspect(面向切面编程)
3.7. @RestControllerAdvice 声明事务
4 Lombok注解
4.1. @Data //动态生成get/set/toString/equals
4.2. @AllArgsConstructor
生成全参构造
5 Test注解
5.1. @Test
5.2. @BeforeEach 测试API中的注解,
6 sentinel
6.1. @SentinelResource
使用此注解描述的方法,在此方法被访问时,会在sentinel的簇点链路中显示,在此注解中指定的名字就是资源名,我们可以对这个资源的访问,按照指定的链路进行限流。
7. Spring-security
7.1. @EnableResourceServer
在资源服务配置中让配置生效
7.2. @EnableGlobalMethodSecurity(prePostEnabled = true)
访问资源服务器中相关的方法(@PerPostEnabled=true注解描述的方法)启动的时候进行权限检查
简单来说就是定义哪些资源需要需要访问授权
7 RabbitMq
7.1 @RabbitListener(queues = “helloworld”)
7.2 @RabbitHandler
收消息,一个类中只能有一个@RabbitHandler,配合@RabbitListener使用
7.3 @PostConstruct
8 seata 全局事务
8.1 AC
8.2 TCC
@LocalTCC
@TwoPhaseBusinessAction(
name = “OrderTccAction”,//第一阶段方法
commitMethod = “commit”,//第二阶段方法
rollbackMethod = “rollback”)//第三阶段回滚方法
@BusinessActionContextParameter(paramName = “orderId”) Long orderId,