前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【SpringBoot注解-1】:常见注解总览

【SpringBoot注解-1】:常见注解总览

作者头像
云深i不知处
发布2020-09-16 09:45:41
3900
发布2020-09-16 09:45:41
举报
文章被收录于专栏:测试基础测试基础

注解可以说是SpringBoot框架的核心,本文对常见的注解做了收集和整理。持续补充中…

1 启动类注解

  • @SpringBootApplication:等价于@Configuration+@EnableAutoConfiguration+@ComponentScan
  • @EnableAutoConfiguration:开启自动配置功能,自动根据导入的依赖来自动配置项目。
  • @ComponentScan:该注解标识的类,会被 Spring 自动扫描并且装入bean容器。
  • @Configuration:定义配置类,被注解的类内部包含有一个或多个被 @Bean 注解的方法

2 配置注解

  • @Import:用来导入其他配置类。
  • @ImportResource:用来加载xml配置文件。
  • @Service:一般用于修饰 service 层的组件。
  • @Repository:使用该注解可以确保 dao 或者 repositories 提供异常转译,这个注解修饰的类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。
  • @Value:注入properties/yml 配置的属性的值,具体用法如下:@Value("${tool.calculate.digits}") private String digits;
  • @Bean:标注在方法上,将方法的返回对象交由 Spring 处理。
  • @Component:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
  • @Slf4j:使用SLF4J日志类库,无需创建日志记录器。
  • @Scope
  • @EnableAsync

3 元注解

  • @Documented:表明这个注解应该被 javadoc工具记录。默认情况下,javadoc是不包括注解的,但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理,所以注解类型信息也会被包括在生成的文档中,是一个标记注解,没有成员。
  • @Target:用于定义注解的使用位置,如果没有该项,表示注解可以用于任何地方。
  • @Retention:用于指明修饰的注解的生存周期,即会保留到哪个阶段。
  • @Inherited:用于标注一个父类的注解是否可以被子类继承。

4 AOP相关注解

AOP(Aspect Oriented Programming)意为“面向切面编程”,旨在分离关注点,达到一种可配置的、可插拔的程序结构。

  • @Aspect:用来描述一个切面类,定义切面类的时候需要打上这个注解。
  • @Pointcut:用来定义一个切面(切入点),即上文中所关注的某件事情的入口。切入点决定了连接点关注的内容,使得我们可以控制通知什么时候执行。
  • @Before:指定的方法在切面切入目标方法之前执行,可以做一些 Log 处理,也可以做一些信息的统计。
  • @After:指定的方法在切面切入目标方法之后执行,也可以做一些完成某方法之后的 Log 处理。
  • @AfterReturning:用来捕获切入方法执行完之后的返回值,对返回值进行业务逻辑上的增强处理。
  • @AfterThrowing:当被切方法执行过程中抛出异常时,会进入 @AfterThrowing 注解的方法中执行,在该方法中可以做一些异常的处理逻辑。

5 异常处理相关注解

  • @RestControllerAdvice
  • @ExceptionHandler

6 Bean注入相关注解

  • @Autowired:按类型(byType)自动注入依赖的Bean,可以对类成员变量、方法及构造函数进行标注。可以添加(required=false)属性,规避无法匹配相应Bean的异常。
  • @Qualifier:当存在多个同一类型的Bean时,可以用@Qualifier(“name”)配合@Autowired来指定要注入的Bean。
  • @Resource(name=”name”,type=”type”):功能与@Autowired类似,没有括号内内容的话,默认使用byName方式匹配。
  • @Inject:等价于默认的@Autowired,只是没有required属性。

7 MVC项目相关注解

  • @Controller:用于定义控制器类,在Spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping。
  • @ResponseBody:直接返回json数据。
  • @RestController: SpringBoot 新增的一个注解,返回JSON格式的数据,可以看作是 @Controller 和 @ResponseBody 的结合体。
  • @RequestMapping:用来处理请求地址映射的注解,它可以用于类上,也可以用于方法上。
  • @PathVariable:要用来获取Restful风格的url("/student/{id}")的参数。
  • @RequestParam:也是获取请求参数的,和@PathVariable不同之处在于,它处理的url格式为http://localhost:8080/student?id=1。
  • @RequestBody:用于接收前端传来的实体,接收参数也是对应的实体。

8 数据层相关注解

  • @Transactional:使用这个注解的类或者方法表示该类里面的所有方法或者这个方法的事务由spring处理,来保证事务的原子性,即是方法里面对数据库操作,如果失败则spring负责回滚操作,成功则提交操作。
  • @Mapper:注解在dao层接口上,最终 Mybatis 会有一个拦截器,会自动的把 @Mapper 注解的接口生成动态代理类。
  • @MapperScan:注解在启动类上,配置一个或多个包路径,自动的扫描这些包路径下的类,自动的为它们生成代理类,可以避免为每个dao层接口注解@Mapper。
  • @Select:注解在dao层方法上,执行一条查询语句。
  • @Insert:注解在dao层方法上,执行一条插入语句。
  • @Update:注解在dao层方法上,执行一条更新语句。
  • @Delete:注解在dao层方法上,执行一条删除语句。

9 实体层相关注解

  • @Setter:注解在属性上,为属性提供 set 方法。
  • @Getter:注解在属性上,为属性提供 get 方法。
  • @Data:注解在类上,提供类所有属性的 get 和 set 方法,此外还提供了equals、canEqual、hashCode、toString 方法。
  • @Builder
  • @AllArgsConstructor:注解在类上,为类提供一个全参的构造方法。
  • @NoArgsConstructor:注解在类上,为类提供一个无参的构造方法。
  • @Region
  • @NonNull:注解在属性上,该注解修饰的属性不能为 null。
  • @val:注解在属性上,该注解修饰的属性被设置为 final 类型。
  • @toString:生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 启动类注解
  • 2 配置注解
  • 3 元注解
  • 4 AOP相关注解
  • 5 异常处理相关注解
  • 6 Bean注入相关注解
  • 7 MVC项目相关注解
  • 8 数据层相关注解
  • 9 实体层相关注解
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档