天天看点

Lombok 注解说明

val 

      自动识别参数类型,会定义一个局部final的变量

    例如 val  a = new ArrayList<String>();  相当于  final ArrayList<String> a = new ArrayList<String>();

@NonNull 

    非空约束,

    可以注解在方法的参数上,类的属性上

     public void hello(@NonNull String hello){

        System.out.println(hello);

    }

    如果hello为空的话,不会执行System.out.println(hello):方法,会抛出一个空指针异常

    -----

    注解在方法的属性名上,如果有,@RequiredArgsConstructor注解 构造该对象时,必须传入参数

    public class App 

    {

        @NonNull 

       private String hello;

    }

@Cleanup

    对象引用结束前调用某个方法,默认是close()方法,也可以自己制定一个无参的方法,多用于关闭流等操作,避免繁琐的try{}catch{}操作

@Getter/Setter

    可以注解在类上或者字段上。

    注解在类上为所有的字段自动生成过   Getter/Setter 方法

    可设置参数value=AccessLevel.xxxx 生成方法的访问权限

@ToString  

    includeFieldNames  生成的toString是否包含字段名称,默认true

    exclude 排除那些字段

    of 包括那些字段(默认全部),如果指定了对象,那么 exclude 里面对应的字段也会被执行

    callSuper 是否调用父类的 toString()方法

    doNotUseGetters 获取字段值的时候,如果有可用的getters 是否不使用,默认false使用

@EqualsAndHashCode

    exclude

    of

    callSuper

    doNotUseGetters  同上

@NoArgsConstructor (自动生成无参构造器)

@RequiredArgsConstructor (有参构造器,如果 字段有 @NonNull 注解,那么构造器必须包含该字段,不可以和@NoArgsConstructor同在)

@AllArgsConstructor 全参构造器,会生成一个带有全部参数的构造器

    staticName 会将构造器私有化,并创建一个静态的方法

    onConstructor 

    access 构造器的访问权限,默认是 public

@Data

    相当于使用了    

@Getter

@Setter

@ToString

@EqualsAndHashCode

 and 

@RequiredArgsConstructor 这些注解

staticConstructorc 类似于staticName参数的作用

@Value

    类似Data,但是会将所有的字段设置成 private final 的,并且不会生成setters

@

Builder

    会创建一个内部类,并创建静态的 builder方法,可以通过该方法链式的构造对象,描述起来比较复杂

    这一段最好能自己看看官方文档:    

https://projectlombok.org/features/Builder.html

@SneakyThrows

    如果有一些自己不想处理的异常,但是抛出后,调用该方法的时候又有很多 try{}catch{}很麻烦,就可以用这个注解。

    用的比较多的是实现Runnable 的run()方法里面。众所周知run()方法是没有抛出异常的,写在里面的代码动不动就要try{}catch{}着实麻烦,用这个注解就可以搞定了

@Synchronized

    给方法加锁

@Wither

    该注解放在属性前面,会生成属性的withXXX方法,可以使用withAge(xxx).withXX() 链式操作

日志类注解:自动在你的类里面生成静态的 类实例

  • @CommonsLog

  • Creates 

    private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);

  • @Log

  • Creates 

    private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());

  • @Log4j

  • Creates 

    private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);

  • @Log4j2

  • Creates 

    private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);

  • @Slf4j

  • Creates 

    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

  • @XSlf4j

onMethod= / onConstructor= / onParam= 可以在对应的 地方添加 其他注解

    如果我们用了@Getter注解, 生成的getXX()方法是我们是看不到的,如果我们要在生成的getXXX()方法上面加注解,可以用 @Getter(onMethod=@__({@Ann1,@Ann2,@Ann3(value="hello")})) 这样的方式

示例代码如下

@AllArgsConstructor(onConstructor=@__(@Inject))

 public class OnXExample {

   @Getter(onMethod=@__({@Id, @Column(name="unique-id")}))

   @Setter(onParam=@__(@Max(10000)))

   private long unid;

 }

转载于:https://my.oschina.net/diamondfsd/blog/608092