Java 注解
Java中的元注解(Meta-annotation)是一种用于注解其他注解的注解,它们提供了对其他注解进行更精细控制的功能。Java定义了四种标准的元注解:
@Retention:指定注解的保留策略,即注解在源代码、编译时还是运行时有效。有三个可选的保留策略:RetentionPolicy.SOURCE、RetentionPolicy.CLASS、RetentionPolicy.RUNTIME。@Target:指定注解应用的目标元素类型,如类、方法、字段等。可以同时指定多个目标元素类型,使用ElementType枚举值,如ElementType.TYPE、ElementType.METHOD、ElementType.FIELD等。@Documented:指定注解是否包含在Java文档中生成。@Inherited:指定注解是否可以被子类继承。
除了这四种标准的元注解外,Java SE还定义了一些其他的非标准元注解:
@Repeatable:表示注解可以在同一元素上重复使用,结合@interface注解来创建可重复注解。@Native:指定注解应该由本地代码实现。@FunctionalInterface:表示注解是一个函数式接口。
这些元注解共同为开发者提供了更灵活和细粒度的控制机制,可以用于自定义注解或扩展现有注解的功能。
Spring注解
@Component:将类标记为Spring组件。通常作用于任何类,表示该类将由Spring框架自动扫描和实例化。@Repository:将类标记为持久化层的Spring组件。通常作用于DAO类,用于数据库访问。@Service:将类标记为业务逻辑层的Spring组件。通常作用于Service类,用于实现业务逻辑。@Controller:将类标记为处理Web请求的控制器。通常作用于Controller类,用于处理用户请求并返回相应的视图或数据。@Autowired:通过类型自动装配,将依赖注入到Bean中。@Qualifier:与@Autowired配合使用,通过指定Bean的名称解决依赖注入的歧义性。@Value:将属性值注入到Bean中。@Scope:指定Bean的作用域,如singleton(默认)、prototype、request、session等。@RequestMapping:将URL映射到Controller的处理方法上。@PathVariable:将URL中的参数值映射到方法的参数上。@RequestParam:将请求参数映射到方法的参数上。@ResponseBody:将方法的返回值直接作为响应体返回给客户端。@ExceptionHandler:用于定义全局的异常处理方法。@Configuration:将类标记为配置类,用于代替传统的XML配置文件。@Bean:在配置类中使用,用于声明一个Bean对象。
SpringMVC 注解
@Controller:将类标记为处理Web请求的控制器。@RestController:与@Controller类似,但是它默认将返回的对象直接作为响应体,常用于RESTful风格的接口。@RequestMapping:将URL映射到Controller的处理方法上,可以用于类级别和方法级别。@GetMapping:将HTTP的GET请求映射到方法上。@PostMapping:将HTTP的POST请求映射到方法上。@PutMapping:将HTTP的PUT请求映射到方法上。@DeleteMapping:将HTTP的DELETE请求映射到方法上。@PatchMapping:将HTTP的PATCH请求映射到方法上。@PathVariable:将URL中的参数值映射到方法的参数上。@RequestParam:将请求参数映射到方法的参数上。@RequestBody:将请求体映射到方法的参数上。@ResponseBody:将方法的返回值直接作为响应体返回给客户端。@ModelAttribute:将请求参数或表单数据绑定到一个对象上。@SessionAttribute:将模型属性存储到会话中。@Valid:用于数据校验,配合javax.validation相关注解使用。@InitBinder:用于初始化数据绑定器,可以对请求参数进行预处理。@ExceptionHandler:用于定义处理异常的方法。
SpringBoot 注解
@SpringBootApplication:标记启动类,将其识别为Spring Boot应用程序的入口点。@RestController:将类标记为控制器,用于处理HTTP请求并返回响应。@RequestMapping:将方法映射到特定的HTTP请求路径。@Autowired:自动装配依赖,从Spring容器中获取对应的Bean。@Component:标记组件类,以便能够被Spring自动扫描并创建实例。@Service:标记服务类,通常用于业务逻辑的实现。@Repository:标记数据访问类,用于访问数据库或其他持久化存储。@Configuration:标记配置类,是Spring容器中的一个Bean,并定义了一些配置信息。@Value:注入属性值,用于给变量赋予配置文件中的属性值。@Profile:设置应用程序的配置文件或环境,以便根据不同的环境加载不同的配置。@Transactional:声明事务,应用于业务方法,使其在执行过程中具有事务管理的能力。@EnableAutoConfiguration:开启自动配置,根据项目的依赖和配置,自动配置Spring Boot应用程序。
SpringCloud 注解
@EnableDiscoveryClient:标记应用程序作为服务注册中心的客户端,并允许应用程序发现并注册自己。@EnableEurekaServer:标记应用程序作为Eureka服务注册中心。@EnableCircuitBreaker:启用断路器模式,用于创建可熔断和恢复的服务调用。@EnableFeignClients:启用Feign客户端,简化服务之间的HTTP调用。@EnableHystrix:启用Hystrix断路器,提供容错能力和线程隔离。@EnableZuulProxy:启用Zuul代理,用于API网关和路由功能。@EnableConfigServer:启用配置服务,用于集中管理和动态刷新应用程序的配置。@EnableSleuth:启用分布式跟踪和跨服务调用追踪能力。@EnableOAuth2Client:启用OAuth2客户端支持,用于与OAuth2授权服务器集成。@EnableResourceServer:启用资源服务器支持,用于保护和验证受OAuth2保护的资源。@EnableBinding:启用消息绑定,用于与消息中间件(如RabbitMQ、Kafka等)进行集成。@StreamListener:标记方法作为Spring Cloud Stream中的消息监听器。
Mybatis 注解
@Mapper:将接口标记为MyBatis的Mapper,并交给Spring管理。可以在接口中定义SQL映射方法。@Select:声明一个查询语句,可用于查询单个结果或多个结果。@Insert:声明一个插入语句,用于插入数据到数据库。@Update:声明一个更新语句,用于更新数据库中的数据。@Delete:声明一个删除语句,用于从数据库中删除数据。@Results:用于声明查询结果的映射关系,将数据库查询结果与Java对象进行映射。@Result:用于声明一个字段与数据库结果的映射关系。@Param:用于指定方法参数在SQL语句中的名称,可以在动态SQL中使用。@One:在一对一关联查询时使用,将返回结果映射到一个关联对象。@Many:在一对多或多对多关联查询时使用,将返回结果映射到多个关联对象。@Options:用于设置一些特殊的查询选项,如是否使用缓存、是否返回自动生成的主键值等。@InsertProvider、@UpdateProvider、@DeleteProvider:用于使用Provider类生成动态SQL。@ResultMap:用于指定使用哪个已经定义好的@Results注解集合,用于复用映射关系。
Mybatis-Plus 注解
@TableName:指定实体类对应的数据库表名。@TableId:指定主键字段。@TableField:指定实体类字段与数据库表字段的映射关系,可以设置字段名、插入时是否忽略该字段、更新时是否忽略该字段等。@EnumValue:用于枚举类型,指定数据库存储的值是枚举的哪个字段。@Version:乐观锁注解,用于实现乐观锁功能。@TableLogic:逻辑删除注解,用于实现逻辑删除功能。@KeySequence:序列主键注解,用于指定生成主键的数据库序列。@SqlParser:SQL解析注解,用于标记是否对SQL进行解析,如分页插件等。@ResultType:指定查询结果的返回类型。@Query:自定义查询注解,用于编写自定义的SQL语句。@Insert:插入数据注解,用于执行插入操作。@Update:更新数据注解,用于执行更新操作。@Delete:删除数据注解,用于执行删除操作。@Select:查询数据注解,用于执行查询操作。@Mapper:将接口标记为MyBatis的Mapper接口。