开发常用注解

99 阅读7分钟

Java 注解

Java中的元注解(Meta-annotation)是一种用于注解其他注解的注解,它们提供了对其他注解进行更精细控制的功能。Java定义了四种标准的元注解:

  1. @Retention:指定注解的保留策略,即注解在源代码、编译时还是运行时有效。有三个可选的保留策略:RetentionPolicy.SOURCERetentionPolicy.CLASSRetentionPolicy.RUNTIME
  2. @Target:指定注解应用的目标元素类型,如类、方法、字段等。可以同时指定多个目标元素类型,使用ElementType枚举值,如ElementType.TYPEElementType.METHODElementType.FIELD等。
  3. @Documented:指定注解是否包含在Java文档中生成。
  4. @Inherited:指定注解是否可以被子类继承。

除了这四种标准的元注解外,Java SE还定义了一些其他的非标准元注解:

  1. @Repeatable:表示注解可以在同一元素上重复使用,结合@interface注解来创建可重复注解。
  2. @Native:指定注解应该由本地代码实现。
  3. @FunctionalInterface:表示注解是一个函数式接口。

这些元注解共同为开发者提供了更灵活和细粒度的控制机制,可以用于自定义注解或扩展现有注解的功能。

Spring注解

  1. @Component:将类标记为Spring组件。通常作用于任何类,表示该类将由Spring框架自动扫描和实例化。
  2. @Repository:将类标记为持久化层的Spring组件。通常作用于DAO类,用于数据库访问。
  3. @Service:将类标记为业务逻辑层的Spring组件。通常作用于Service类,用于实现业务逻辑。
  4. @Controller:将类标记为处理Web请求的控制器。通常作用于Controller类,用于处理用户请求并返回相应的视图或数据。
  5. @Autowired:通过类型自动装配,将依赖注入到Bean中。
  6. @Qualifier:与@Autowired配合使用,通过指定Bean的名称解决依赖注入的歧义性。
  7. @Value:将属性值注入到Bean中。
  8. @Scope:指定Bean的作用域,如singleton(默认)、prototyperequestsession等。
  9. @RequestMapping:将URL映射到Controller的处理方法上。
  10. @PathVariable:将URL中的参数值映射到方法的参数上。
  11. @RequestParam:将请求参数映射到方法的参数上。
  12. @ResponseBody:将方法的返回值直接作为响应体返回给客户端。
  13. @ExceptionHandler:用于定义全局的异常处理方法。
  14. @Configuration:将类标记为配置类,用于代替传统的XML配置文件。
  15. @Bean:在配置类中使用,用于声明一个Bean对象。

SpringMVC 注解

  1. @Controller:将类标记为处理Web请求的控制器。
  2. @RestController:与@Controller类似,但是它默认将返回的对象直接作为响应体,常用于RESTful风格的接口。
  3. @RequestMapping:将URL映射到Controller的处理方法上,可以用于类级别和方法级别。
  4. @GetMapping:将HTTP的GET请求映射到方法上。
  5. @PostMapping:将HTTP的POST请求映射到方法上。
  6. @PutMapping:将HTTP的PUT请求映射到方法上。
  7. @DeleteMapping:将HTTP的DELETE请求映射到方法上。
  8. @PatchMapping:将HTTP的PATCH请求映射到方法上。
  9. @PathVariable:将URL中的参数值映射到方法的参数上。
  10. @RequestParam:将请求参数映射到方法的参数上。
  11. @RequestBody:将请求体映射到方法的参数上。
  12. @ResponseBody:将方法的返回值直接作为响应体返回给客户端。
  13. @ModelAttribute:将请求参数或表单数据绑定到一个对象上。
  14. @SessionAttribute:将模型属性存储到会话中。
  15. @Valid:用于数据校验,配合javax.validation相关注解使用。
  16. @InitBinder:用于初始化数据绑定器,可以对请求参数进行预处理。
  17. @ExceptionHandler:用于定义处理异常的方法。

SpringBoot 注解

  1. @SpringBootApplication:标记启动类,将其识别为Spring Boot应用程序的入口点。
  2. @RestController:将类标记为控制器,用于处理HTTP请求并返回响应。
  3. @RequestMapping:将方法映射到特定的HTTP请求路径。
  4. @Autowired:自动装配依赖,从Spring容器中获取对应的Bean。
  5. @Component:标记组件类,以便能够被Spring自动扫描并创建实例。
  6. @Service:标记服务类,通常用于业务逻辑的实现。
  7. @Repository:标记数据访问类,用于访问数据库或其他持久化存储。
  8. @Configuration:标记配置类,是Spring容器中的一个Bean,并定义了一些配置信息。
  9. @Value:注入属性值,用于给变量赋予配置文件中的属性值。
  10. @Profile:设置应用程序的配置文件或环境,以便根据不同的环境加载不同的配置。
  11. @Transactional:声明事务,应用于业务方法,使其在执行过程中具有事务管理的能力。
  12. @EnableAutoConfiguration:开启自动配置,根据项目的依赖和配置,自动配置Spring Boot应用程序。

SpringCloud 注解

  1. @EnableDiscoveryClient:标记应用程序作为服务注册中心的客户端,并允许应用程序发现并注册自己。
  2. @EnableEurekaServer:标记应用程序作为Eureka服务注册中心。
  3. @EnableCircuitBreaker:启用断路器模式,用于创建可熔断和恢复的服务调用。
  4. @EnableFeignClients:启用Feign客户端,简化服务之间的HTTP调用。
  5. @EnableHystrix:启用Hystrix断路器,提供容错能力和线程隔离。
  6. @EnableZuulProxy:启用Zuul代理,用于API网关和路由功能。
  7. @EnableConfigServer:启用配置服务,用于集中管理和动态刷新应用程序的配置。
  8. @EnableSleuth:启用分布式跟踪和跨服务调用追踪能力。
  9. @EnableOAuth2Client:启用OAuth2客户端支持,用于与OAuth2授权服务器集成。
  10. @EnableResourceServer:启用资源服务器支持,用于保护和验证受OAuth2保护的资源。
  11. @EnableBinding:启用消息绑定,用于与消息中间件(如RabbitMQ、Kafka等)进行集成。
  12. @StreamListener:标记方法作为Spring Cloud Stream中的消息监听器。

Mybatis 注解

  1. @Mapper:将接口标记为MyBatis的Mapper,并交给Spring管理。可以在接口中定义SQL映射方法。
  2. @Select:声明一个查询语句,可用于查询单个结果或多个结果。
  3. @Insert:声明一个插入语句,用于插入数据到数据库。
  4. @Update:声明一个更新语句,用于更新数据库中的数据。
  5. @Delete:声明一个删除语句,用于从数据库中删除数据。
  6. @Results:用于声明查询结果的映射关系,将数据库查询结果与Java对象进行映射。
  7. @Result:用于声明一个字段与数据库结果的映射关系。
  8. @Param:用于指定方法参数在SQL语句中的名称,可以在动态SQL中使用。
  9. @One:在一对一关联查询时使用,将返回结果映射到一个关联对象。
  10. @Many:在一对多或多对多关联查询时使用,将返回结果映射到多个关联对象。
  11. @Options:用于设置一些特殊的查询选项,如是否使用缓存、是否返回自动生成的主键值等。
  12. @InsertProvider@UpdateProvider@DeleteProvider:用于使用Provider类生成动态SQL。
  13. @ResultMap:用于指定使用哪个已经定义好的@Results注解集合,用于复用映射关系。

Mybatis-Plus 注解

  1. @TableName:指定实体类对应的数据库表名。
  2. @TableId:指定主键字段。
  3. @TableField:指定实体类字段与数据库表字段的映射关系,可以设置字段名、插入时是否忽略该字段、更新时是否忽略该字段等。
  4. @EnumValue:用于枚举类型,指定数据库存储的值是枚举的哪个字段。
  5. @Version:乐观锁注解,用于实现乐观锁功能。
  6. @TableLogic:逻辑删除注解,用于实现逻辑删除功能。
  7. @KeySequence:序列主键注解,用于指定生成主键的数据库序列。
  8. @SqlParser:SQL解析注解,用于标记是否对SQL进行解析,如分页插件等。
  9. @ResultType:指定查询结果的返回类型。
  10. @Query:自定义查询注解,用于编写自定义的SQL语句。
  11. @Insert:插入数据注解,用于执行插入操作。
  12. @Update:更新数据注解,用于执行更新操作。
  13. @Delete:删除数据注解,用于执行删除操作。
  14. @Select:查询数据注解,用于执行查询操作。
  15. @Mapper:将接口标记为MyBatis的Mapper接口。