SpringBoot 常用注解辨析

一、注解的概念,使用场景,有哪些分类

        注解是用来说明程序中某些元素的特性、行为,以及对编译器执行工作的指示的标记。注解可以被用来提供元数据,可以在编译、运行时被处理,也可以在代码分析、代码生成等时期起作用。

使用场景(包括但不限于):

  1. 标记过期元素:使用 @Deprecated 注解可以标记某个方法、类、接口等已经不建议使用,以便开发者知道在后续版本中它们可能会被删除。

  2. 标记代码的作者/版本信息:使用 @Author 和 @Version 注解可以方便地描述代码的作者和版本信息。

  3. 生成代码文档: 使用 @document 来标记注释和方法是常用的生成文档的方式。使用 JavaDoc 工具加上一些特殊的注解可以生成你的项目中的 Java 代码的 API 文档。

  4. 运行时动态代理:使用 Java 动态代理,必须要有一个接收代理对象的 InvocationHandler 接口实例,并在实现接口实例的时候使用了 @代理注解 来声明该类需要被 JDK 代理。

  5. 代替配置文件功能:可以减少xml文件的配置。

  6. 使用注解作为权限设置:如shiro中有5个权限注解,也可以自定义注解进行权限控制。

分类:

  1. 元注解:元注解就是注解的注解,可以用来定义一个注解的基础属性(如:给自定义注解上加注解),如:@Target、@Retention、@Documented 等。

  2. 基本注解(内置注解):Java 本身自带的注解,如:@Override、@Deprecated、@SuppressWarnings。

  3. 自定义注解:自定义的注解,能够满足一些特定的业务需求或者框架设计需求。如:@Service、@Repository、@Controller 等。

二、SpringBoot 常用注解

1、@RestController

@RestController的作用等同于@Controller + @ResponseBody。而@Controller注解的作用是通过在一个类上添加@Controller注解,表明了这个类是一个控制器类,并且还需要在该类中添加注解@RequestMapping;而@ResponseBody表示方法的返回值直接以指定的格式写入Http response body中,而不是解析为跳转路径。所以@RestController注解的作用大致就是将被注解的类设置为一个控制类,是用于spring boot项目中创建controller类所需要的,且一般要与@RequestMapping(后面会讲到)联用,且支持快捷的返回一个JSON对象。然后@RestController的使用方法和代码如下:

 @RestController
 @RequestMapping("/checkgroup") //映射到带有参数“checkgroup”的页面
 public class CheckGroupController { //表明这个类是一个控制类
   XXXXX5
 }

2、@RequestMapping

  @RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径,简单来说,就是在页面上标有此映射的功能和参数都会直接传到被映射的函数里面执行。且它的属性和对应的作用如以下所示:

  • value:用于指定请求的 URL。它和 path 属性的作用是一样的。
  • method:用于指定请求的方式。
  • params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 value 必须和 配置的一模一样。

  且如果是用于方法上,则是请求 URL 的第二级访问目录,在使用的时候需要以/开头。 它出现的目的是为了使我们的 URL 可以按照模块化管理。

  举个例子,将@RequestMapping注解分别注释在类和方法上,所以在前端写链接的时候要写完全的路径(类上标签的路径+方法标签上的路劲)

3、@Component

@component (把普通pojo实例化到spring容器中,相当于配置文件中的 
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

4、@Resource 和 @Autowired

①、@Resource和@Autowired都是Java中两个用于注入依赖的注解,它们的功能有些类似,但在某些方面存在一些区别。@Autowired注解是Spring框架提供的,而@Resource注解是JavaEE标准的一部分,包含在javax.annotation包中。所以,如果你使用的是Spring框架,通常会选择使用@Autowired注解。

②、@Autowired注解按照类型(byType)进行自动装配,它会根据类型在容器中自动查找匹配的Bean,并注入到相应的字段或方法参数中。如果存在多个匹配的Bean,Spring框架会尝试根据Bean的名称进行匹配。如果名称匹配失败,你需要使用@Qualifier注解或者使用@Autowired的required属性来明确指定注入的Bean。

③、@Resource注解默认按照名称(byName)进行自动装配,它会根据属性名在容器中查找匹配的Bean,并进行注入。如果名称匹配失败,它还支持通过name属性明确指定要注入的Bean的名称。

④、@Autowired注解不能用于注入基本类型的值和String类型的值,它主要用于注入Bean对象。而@Resource注解可以用于注入基本类型的值、String类型的值以及Bean对象。

总的来说,使用场景上,@Autowired注解更加常用,特别是在Spring框架中,它可以很方便地实现依赖注入。而@Resource注解在一些不使用Spring框架的情况下,或者需要注入基本类型或String类型的值时比较有用。

你可能感兴趣的:(编程,spring,boot,java,spring,开发语言)