常用注解集合

Spring

@configuration

@configuration注解可以标注到类上,声明这个类为配置类,启动spring就会自动扫描@configuration注解标注的类,将其注册到ioc容器中,并被实例化成bean对象。

如果被@configuration注解标注的类中存在使用@bean注解标注的创建某个类对象的方法,那么,spring也会自动执行使用@bean注解标注的方法,将对应的bean定义信息注册到ioc容器,并进行实例化。

@Configuration注解能够替代Spring的applicationContext.xml文件

@Configuration注解中每个属性的含义如下所示:

value:存入到Spring IOC容器中的Bean的id。
proxyBeanMethods:表示被@Configuration注解标注的配置类是否会被代理,并且在配置类中使用@Bean注解生成的Bean对象在IOC容器中是否是单例对象

@NotNull判空

参考

在开发中,为了代码的稳定性不报空指针异常,经常需要判断前端传过来的值是否为空,为空的话就返回前端值为空的提示,才能进行下一步的操作,例如登录操作需要判断传过来的登录名和密码是否为空

@NotNull使用步骤

  1. 实体类需要判断的字段上面加上@NotNull注解,并且message配置提示语句
@Data
public class User {

    private Integer id;
    @NotNull(message = "用户名不能为空")
    private String username;
    @NotNull(message = "密码不能为空")
    private String password;

    private String email;

    private String phone;

    private String idCard;

    private Byte sex;

    private Byte deleted;

    private Date updateTime;

    private Date createTime;
}
  1. controller接口的方法参数加入@Valid注解,表示当前的实体类接收的参数需要根据配置的@NotNull注解判断
    @GetMapping("login")
    public Result login(@Valid User user) {
		System.out.println("测试@notNull注解");
        //验证密码操作省略
        return Result.suc();
    }
  1. 配置全局异常捕获

    不配置的话会抛异常,并且控制台没有打印在方法里面的设置的信息,所以可以看出方法没有走我们的业务代码,而是直接被全局异常捕获了,然后返回给了前端数据,所以需要在全局异常里面捕获一下当前异常,并且要让我们提示语句返回给前端,这样才是合理的。

@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler  {
	
   @ExceptionHandler(Throwable.class)
   public ErrorResult handleThrowable(Throwable e, HttpServletRequest request) {
       ErrorResult error =ErrorResult.fail(ResultCode.SYSTEM_ERROR, e);
       log.error("URL:{} ,系统异常: ",request.getRequestURI(), e);
       return error;
   }

   @ExceptionHandler(BindException.class)
   public ErrorResult exceptionHandler(BindException e, HttpServletRequest request) {
       String failMsg = e.getBindingResult().getFieldError().getDefaultMessage();
       ErrorResult error = ErrorResult.fail(ResultCode.SYSTEM_ERROR, e, failMsg);
       log.error("URL:{} ,绑定异常:{} ", request.getRequestURI(),failMsg);
       return error;
   }
}
  1. 问题
    现在是登录接口我们只需要判断username和password,如果是别的接口也是用User类接收的,但是username和password可以为空怎么办?
    在NotNull注解里面配置group,需要验证的时候,就在controller参数注解中加上这个groups名称

@ConfigurationProperties

@ConfigurationProperties注解的主要的作用是可以将外部的配置(如从.yaml文件中)绑定并验证到目标类中。

注册条件

@ConditionalOnClass

如果当前环境有User这个类,就注入Dept

//IOC容器中有User这个Bean,就注入这个dept这个bean 
@ConditionalOnClass(User.class)
public Dept dept(){
 return new Dept(); 
 }
Lombok提供了一系列方便的注解,使得开发者能简洁地创建常见Java元素而无需手动编写大量的样板代码。以下是Lombok中一些常用的注解: 1. `@Getter` 和 `@Setter`: 自动生成getter和setter方法,简化属性访问。例如: ```java @Data // 等同于 @NoArgsConstructor, @AllArgsConstructor, @ToString, @EqualsAndHashCode, @Getter, @Setter class User { private String name; } ``` 2. `@ToString`: 自动生成对象的字符串表示形式。 3. `@NoArgsConstructor` 和 `@AllArgsConstructor`: 分别用于生成无参构造函数和包含所有字段的全参数构造函数。 4. `@AllArgsConstructor` 或 `@NoArgsConstructor` 的变体,如 `@NoArgsConstructor`, `@RequiredArgsConstructor`, `@AllArgsConstructor` with/without varargs,允许更精细的控制构造函数参数。 5. `@Slf4j` 或 `@NonNull`: 注解用于标记日志级别和非空值,便于日志管理和null安全检查。 6. `@Builder`: 生成一个带有默认值和链式方法的构建器,方便对象的构造。 7. `@DataSuperclass` 和 `@Singular`: 提供继承和集合操作的便利性。 8. `@Value`: 类似于`@AllArgsConstructor`,但它会忽略所有`final`字段,不会生成equals, hashCode, toString方法,只保留基本类型字段。 9. `@NoArgsConstructor` 的否定形式 `@NoArgsConstructor(false)`: 可以禁用Lombok自动生成的无参构造器。 10. `@JsonInclude(JsonInclude.Include.NON_NULL)`: 对应于Jackson JSON序列化,将null值排除在外。 这些注解大大提高了Java开发的效率,但在实际应用中需谨慎使用,保持代码清晰易懂。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值