“JSR 269 API” 规范 只要程序实现了该API,就能在javac运行的时候得到调用 而Lombok实现了 “JSR 269 API” 规范 ,在编译时,javac编译源码的具体流程如下:...注:Mac/Linux 系统下则使用 sudo java -jar lombok.jar 命令进行运行即可,但是要确保执行用户有sudo权限。...---- Lombok注解 Lombok 常用的注解: 注解 描述 @Getter / @Setter 可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter...例如:Jackson、Json 序列化 使用Lombok虽然能够省去手动创建setter和getter方法等繁琐事情,但是却降低了源代码文件的可读性和完整性,减低了阅读源代码的舒适度 使用@Slf4j还是...Lombok并非处处适用,我们需要选择适合的地方使用Lombok,例如pojo是一个好地方,因为pojo很单纯 ---- Lombok实战 我这里拿之前项目中的一个 Category 类来做为演示的例子
比如对于简单的 Java 对象(POJO),很多的代码里充斥着大量的 getter() 和 setter() 方法,样板代码占用比例高,影响可读性,引入 Lombok 只需一个注解就能达到相同效果,而且更简洁...Lombok 引入 1、POM 中引入依赖 使用 Lombok 注解需要依赖它的库。...因为 Lombok 的引入后,java 文件使用 javac 编译成的字节码文件中就会包含 getter 和 setter 函数,但是源代码中找不到定义,IDE 会认为这是错误,因此需要安装一个 Lombok...在使用 javac 的过程中,它产生作用的具体流程如下: javac 对源代码进行分析,生成一棵抽象语法树(AST) 运行过程中调用实现了“JSR 269 API”的 Lombok 程序 Lombok...对第一步骤得到的 AST 进行处理,找到 @Getter @Setter 注解所在类对应的语法树(AST) Lombok 修改该语法树(AST),增加 getter() 和 setter() 方法定义的相应树节点
让我们一起看看Lombok怎样施展它的魔法以及一些使用示例。 Lombok如何运行的(How Lombok Works) Lombok充当注解处理器,在编译时将代码“添加”到你的类中。...当我开始一个项目并想到一个领域模型时,我倾向首先编写一个工作中正在进行的非常多的classes,同时如我所想进一步提炼它们从而进行迭代。...我刚刚添加了一大坨lombok.*下的注解并实现了我想要的。上面列出的是我需要为此编写的所有代码。Lombok正在挂载到我的编译器进程中并为我生成了一切(参见我的IDE下面的截图)。 ?...这里发生的事情很简单: 使用@Getter和@Setter我指示Lombok为所有属性生成getter和setter。这是因为我在类级别(class)使用了注解。...感谢@NoArgsConstructor和@AllArgsConstructor让我得到了我的类创建默认空构造以及额外的一个用于所有属性的构造。
Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。...出现的神奇就是在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。这样就省去了手动重建这些代码的麻烦,使代码看起来更简洁些。...:lombok.jar 重启 eclipse / myeclipse 5 lombok的注解 1、@Getter/@Setter 自动产生 getter/setter 02、@ToStrmatching...@AllArgsConstructor : 生成一个包含所有参数的构造器 这里注意一个 Java 的小坑,当我们没有指定构造器时,Java 编译器会帮我们自动生成一个没有任何参数的构造器给该类,但是如果我们自己写了构造器之后...修饰的话,那就会生成一个没有参数的构造器 05、@Data 整合包,只要加了 @Data 这个注解,等于同时加了以下注解 @Getter/@Setter @ToString @EqualsAndHashCode
强X队友 因为Lombok的使用要求开发者一定要在IDE中安装对应的插件。 如果未安装插件的话,使用IDE打开一个基于Lombok的项目的话会提示找不到方法等错误。导致项目编译失败。...在使用Lombok过程中,如果对于各种注解的底层原理不理解的话,很容易产生意想不到的结果。 举一个简单的例子,我们知道,当我们使用@Data定义一个类的时候,会自动帮我们生成equals()方法 。...这就可能得到意想不到的结果。 影响升级 因为Lombok对于代码有很强的侵入性,就可能带来一个比较大的问题,那就是会影响我们对JDK的升级。...如果我们在代码中直接使用Lombok,那么他会自动帮我们生成getter、setter 等方法,这就意味着,一个类中的所有参数都自动提供了设置和读取方法。...虽然我们将它们定义成 private 类型,但是提供了 public 的 getter、setter 方法。 外部可以通过 setter 方法随意地修改这两个属性的值。
Lombok有它的得天独厚的优点,也有它避之不及的缺点,熟知其优缺点,在实战中灵活运用才是王道。 转发是对我最大的支持,是我坚持下去的最大动力。...Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。...神奇之处就是在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。这样就省去了手动重建这些代码的麻烦,使代码看起来更简洁些。...在使用javac的过程中,它产生作用的具体流程如下: javac对源代码进行分析,生成了一棵抽象语法树(AST) 运行过程中调用实现了“JSR 269 API”的Lombok程序 此时Lombok就对第一步骤得到的...它不像spring的依赖注入或者mybatis的ORM一样是运行时的特性,而是编译时的特性。 这里我个人最感觉不爽的地方就是对插件的依赖!
对于这些格式固定的的代码,IDE也提供了自动生成的功能,但是无论是自动生成还是纯手动写,这些代码在类中是实实在在的存在,有时候,看到一个类文件很长,其中却都是一些,没有任何技术含量的getter和setter...比如对于简单的 Java 对象(POJO),很多的代码里充斥着大量的 getter() 和 setter() 方法,样板代码占用比例高,影响可读性,引入 Lombok 只需一个注解就能达到相同效果,而且更简洁...因为 Lombok 的引入后,java 文件使用 javac 编译成的字节码文件中就会包含 getter 和 setter 函数,但是源代码中找不到定义,IDE 会认为这是错误,因此需要安装一个 Lombok...在使用 javac 的过程中,它产生作用的具体流程如下: javac 对源代码进行分析,生成一棵抽象语法树(AST) 运行过程中调用实现了“JSR 269 API”的 Lombok 程序 Lombok...对第一步骤得到的 AST 进行处理,找到 @Getter @Setter 注解所在类对应的语法树(AST) Lombok 修改该语法树(AST),增加 getter() 和 setter() 方法定义的相应树节点
背景 我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,当要对某个属性进行改变时...@Getter / @Setter 可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter...并可以指定Getter/Setter方法的访问级别。...运行时解析 运行时能够解析的注解,必须将@Retention设置为RUNTIME,这样可以通过反射拿到该注解。...,并且其配置文件eclipse.ini中是否 添加了如下内容: -javaagent:D:\build-env\eclipse\lombok.jar 重启eclipse或myeclipse 项目中使用
首先,它必须定义@Retention为RetentionPolicy.RUNTIME,只能在运行时通过反射来获取注解值,使得运行时代码效率降低。...自从Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”规范,只要程序实现了该API,就能在javac运行的时候得到调用。...配置的编译工具为Oracle javac的话,也就直接支持lombok了; IDE工具问题解决: 现在有一个A类,其中有一些字段,没有创建它们的setter和getter方法,使用了lombok的@Data...注解,另外有一个B类,它调用了A类实例的相应字段的setter和getter方法 编译A类和B类所在的项目,并不会报错,因为最终生成的A类字节码文件中存在相应字段的setter和getter方法 但是,...IDE发现B类源代码中所使用的A类实例的setter和getter方法在A类源代码中找不到定义,IDE会认为这是错误 要解决以上这个不是真正错误的错误,可以下载安装Intellij Idea中的"Lombok
lombok工作原理 java程序的解析分为:运行时解析 和 编译时解析。 通常我们通过反射获取类、方法、注解和成员变量就是运行时解析。但是这种方式效率其实不高,要在程序运行起来才能解析。...这时候编译时解析就体现出它的价值了。...JDK 1.5 与注解(Annotation) 一起引入的,它是一个命令行工具,能够提供构建时基于源代码对程序结构的读取功能,能够通过运行注解处理器来生成新的中间文件,进而影响编译过程。...即使lombok是一个神器,但是却有很多人不建议使用,这又是为什么呢?  运行过程中调用实现了“JSR 269 API”的Lombok程序 此时Lombok就对第一步骤得到的...它不像spring的依赖注入或者mybatis的ORM一样是运行时的特性,而是编译时的特性。这里我个人最感觉不爽的地方就是对插件的依赖!
领取专属 10元无门槛券
手把手带您无忧上云