记录一些java注解的解释和用法(坚持持续更新)

1、@JsonProperty 

 用法一、@JsonProperty注解主要用于实体类的属性上,作用可以简单的理解为在反序列化的时候给属性重命名(多一个名字来识别),关于序列化和反序列化可以看序列化/反序列化,我忍你很久了,淦!

用法二、@JsonProperty 有一个属性Access,用来控制是否 能被【序列化】或者【反序列化】,默认是不受控制的。

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY) 仅做反序列化操作,简单理解只能写入。

@JsonProperty(access = JsonProperty.Access.READ_ONLY) 只能序列化,不能反序列化。,简单理解只能读取。

2、@Transient

实体类中使用了@Table注解后,想要添加表中不存在的字段,就要使用@Transient这个注解了。

3、@Autowired 

它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。用法如下:

@Autowired
protected AdSpaceDao adSpaceDao;

[A]


@Autowired 可以标注在属性上、方法上和构造器上,来完成自动装配

@AllArgsConstructor是 Lombok的一个注解用于生成全参构造函数,默认生成构造函数的访问权限也是public。注解加在类上时,会为所有字段生成构造函数。通过注解的方式为 Java 类添加常见的样板代码,如 getters/setters、equals/hashCode、toString 等方法以及构造器。
例如:
 

@AllArgsConstructor
public class ExampleClass {
    private String field1;
    private int field2;
    // ...
}


等同于:

public class ExampleClass {
    private String field1;
    private int field2;
    
    public ExampleClass(String field1, int field2) {
        this.field1 = field1;
        this.field2 = field2;
    }
    // ...
}

@Aspect 是 Spring AOP(面向切面编程)框架中的一个重要注解,用于声明一个切面(Aspect)类。在 Spring AOP 中,切面是一种跨多个对象的行为或关注点的模块化方法,它主要包括通知(Advice)、连接点(Join Point)、切入点(Pointcut)等概念。

@AutoConfiguration 是Spring Boot框架中的一个注解,它是@SpringBootConfiguration和@ImportAutoConfiguration的组合。这个注解主要用于标记那些包含自动配置类的Java类,这些类定义了Spring Boot如何自动配置应用的各个方面。  @AutoConfiguration通常用在自定义的自动配置类中,这些类用于扩展Spring Boot的默认配置。

        当Spring Boot启动时,它会扫描带有@Configuration或@AutoConfiguration注解的类,并根据类上的其他注解(如@Conditional、@EnableConfigurationProperties等)来决定是否应用这些配置。

[B]


@Builder 注解是 Lombok 提供的一种实现建造者模式的便捷方式,它为 Java 类生成一个 Builder 类,通过链式调用来设置对象属性,并最终通过 build() 方法创建对象实例。

[C]


@Controller 将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。

@Component:定义Spring管理Bean(也就是将标注@Component注解的类交由spring管理)

@ConditionalOnWebApplication 是 Spring Boot 框架中的条件注解,它用于根据应用是否为 Web 应用来决定某个配置类或 Bean 是否生效。

@ConditionalOnClass 是Spring框架中的一个条件注解,属于条件化配置的一部分。这个注解用于控制配置类或配置方法的注册条件,仅当指定的类在类路径上存在时,才会注册相应的bean或配置。

@Configuration 是 Spring Framework 中的一个核心注解,主要用于声明一个类作为 Spring IoC 容器中的 Bean 配置类。在 @Configuration 类中,可以通过 @Bean 注解的方法来定义 Bean。每个方法的返回值将会被注册为一个 Spring Bean,方法名将作为 Bean 的名称(默认情况下)。

[D]


@Data : 注在类上,提供类的get、set、equals、hashCode、toString等方法,属于lombok插件的注解

[E]


@EqualsAndHashCode : 是 Lombok的一个注解,注在类上,提供对应的 equals 和 hashCode 方法,如果希望某些字段不参与 equals() 和 hashCode() 的计算,可以使用 exclude 参数,如 @EqualsAndHashCode(exclude = {"fieldToExclude"})。

         - **callSuper**:默认情况下,生成的 equals() 和 hashCode() 方法不会调用父类的相应方法。如果希望包含父类字段,可以设置 callSuper = true,如 @EqualsAndHashCode(callSuper = true)。

@Entity 注解是 JPA 中的核心注解之一,用于标记一个 Java 类为可持久化的实体类,与数据库中的表进行映射。

@EnableConfigurationProperties 是Spring框架中的一个注解,用于将配置类绑定到属性源,通常是application.properties或application.yml文件中的属性。这个注解使得你能够创建一个Java类,将该类的字段与配置文件中的键值对进行映射,从而方便地在代码中使用这些配置。

[G]


@Getter :注在属性上,提供 get 方法,是 Lombok的一个注解

[F]


@FeignClient 标签的常用属性如下:
        name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现
        url: url一般用于调试,可以手动指定@FeignClient调用的地址
        decode404:当发生http 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException
        configuration: Feign配置类,可以自定义Feign的Encoder、Decoder、LogLevel、Contract
        fallback: 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口
        fallbackFactory: 工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码
        path: 定义当前FeignClient的统一前缀,当我们项目中配置了server.context-path,server.servlet-path时使用

[I]


@Init 在Java开发中,尤其是使用JavaBean或某些框架(如Spring, JSF等)时,开发者可能会希望在对象创建后立即初始化一些属性或执行特定的方法。虽然Java标准库没有直接提供@Init这样的注解,但不同的框架提供了类似功能的注解来达到初始化的目的。以下是一些常见框架中的初始化注解或机制:

[L]


@Log4j/@Slf4j :注在类上,提供对应的 Logger 对象,变量名为 log

[N]


@NoArgsConstructor :注在类上,提供类的无参构造

[P]


@PostContruct 是spring框架的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。这个方法会在所有必需的依赖被Spring容器注入之后调用一次。
特点:1、只有一个非静态方法能使用此注解
           2、被注解的方法不得有任何参数
           3、被注解的方法返回值必须为void
           4、被注解方法不得抛出已检查异常
           5、此方法只会被执行一次
JSF框架提供了@PostConstruct用于管理bean的初始化方法,与Spring中的用途相似

@PreDestroy 与 @PostConstruct 相反,为程序环境整体结束前执行的动作


[R]

@RequestParam接收的参数是来自requestHeader中,即请求头。通常用于GET请求,像POST、DELETE等其它类型的请求也可以使用。

@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。通常用于接收POST、DELETE等类型的请求数据,GET类型也可以适用。

        在GET请求中,不能使用@RequestBody。
        在POST请求,可以使用@RequestBody和@RequestParam,但是如果使用@RequestBody,对于参数转化的配置必须统一。
        可以使用多个@RequestParam获取数据,@RequestBody不可以

@PathVariable 是spring3.0的一个新功能:接收请求路径中占位符的值
一般也是用于Get请求,URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中
例如:localhost:8080/id/1

@RestController 是一个Spring框架中的注解,用于标记在Java类上,表明该类是一个RESTful Web服务控制器。它结合了@Controller和@ResponseBody的功能。  - **@Controller**:表示这是一个处理HTTP请求的控制器类,Spring MVC会将请求路由到此类的方法上。 - **@ResponseBody**:指示方法的返回值应直接写入HTTP响应体,而不是视图解析器处理。这意味着返回的对象会被转换为JSON或XML等格式,然后发送给客户端。  因此,@RestController 常用于构建提供JSON或XML数据的API服务。例如,当你想要创建一个返回JSON数据的HTTP端点时,会在处理请求的方法上使用@RequestMapping或@GetMapping、@PostMapping等来定义HTTP操作,并在类级别上使用@RestController。

@ResponseBody 它的作用简短截说就是指该类中所有的API接口返回的数据,甭管你对应的方法返回Map或是其他Object,它会以Json字符串的形式返回给客户端

@RequiredArgsConstructorLombok的一个注解,简化了我们对@Autowired书写,我们在写Controller层或者Service层的时候,总是需要注入很多mapper接口或者service接口,如果每个接口都写上@Autowired,这样看起来就会很繁琐,@RequiredArgsConstructor注解可以代替@Autowired注解

@RefreshScope 是 Spring Cloud 微服务架构中的一个注解,主要应用于 Spring Cloud Config 项目中。当一个 Bean 被标记为 @RefreshScope 时,它具备了动态刷新配置的能力。
 

[S]

@Setter :注在属性上,提供 set 方法,是 Lombok的一个注解

@Schema 是一个Java注解,常用于Java对象模型(Java Beans)中,用于描述数据模型,特别是在使用OpenAPI(之前称为Swagger)或JSON Schema来生成API文档时。这个注解通常与Springfox、Springdoc等库一起使用,以帮助自动生成API文档。  

        - **在类级别**:@Schema 用于描述一个类,它代表了JSON对象的结构,可以定义元数据如名称、描述、类型等。 - **在字段级别**:用于描述类的属性,可以指定字段的名称、类型、是否必须等信息。

@SpringBootConfiguration 是Spring Boot框架中的一个注解,它结合了Spring的@Configuration和@EnableAutoConfiguration两个注解的功能。这个注解通常用于标记一个类为Spring Boot配置类,同时启用了自动配置。 
        - **@Configuration**:这是Spring框架的注解,表示该类是一个配置类,可以包含@Bean方法来定义bean实例。
        - **@EnableAutoConfiguration**:Spring Boot的关键特性,它会根据类路径中的jar包和其他条件自动配置应用。例如,如果类路径中有JDBC驱动,Spring Boot会自动配置数据源;如果发现Spring Web的相关依赖,会自动配置Web应用。

[T]

@Transactional注解是Spring框架提供的一个用于声明式事务管理的注解。它可以应用在方法或类上,用于标识需要进行事务管理的方法或类

@TableField注解
1、 主要用来解决实体类的字段名与数据库中的字段名不匹配的问题(数据库user_addr,字段useraddr未驼峰)
2、 实体类中的属性字段在表中不存在的问题

@TableName(value = …)当数据库名与实体类名不一致或不符合驼峰命名时,需要在此注解指定表名(不加这个注解默认将实体类的小写形式在db中寻找)

@TableId(type = …)指定实体类的属性为对应的主键,主要有以下几种:
         // 数据库ID自增  IdType.AUTO

        // 该类型为未设置主键类型(默认)IdType.NONE 
        /**
         * 用户输入ID
         * <p>该类型可以通过自己注册自动填充插件进行填充</p>
         */
        IdType.INPUT


        /* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */
        //1.全局唯一ID (idWorker)  IdType.ID_WORKER
 
        //2.全局唯一ID (UUID)  IdType.UUID
 
        //3.字符串全局唯一ID (idWorker 的字符串表示)   IdType.ID_WORKER_STR

@Transient JPA规范中在ENTITY里的字段上标注表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性

@Temporal 在核心的 Java API 中并没有定义 Date 类型的精度(temporal precision). 而在数据库中,表示 Date
类型的数据有 DATE, TIME, 和 TIMESTAMP 三种精度(即单纯的日期,时间,或者两者 兼备). 在进行属性映射时可使用@Temporal 注解来调整精度

[V]


@Validation是一套帮助我们继续对传输的参数进行数据校验的注解,通过配置Validation可以很轻松的完成对数据的约束

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值