Lombok

注解开发学习笔记

两盒软妹~` 提交于 2020-04-12 12:06:42
前言 因为之前玩play framework缘故,对springboot不是很了解; 注解我存在很多疑惑: ① 在springboot中自定义的注解如何才能生效使用 ② Lombok 这种注解插件是怎么改变生成的代码的 Lombok插件 今天网上找了一篇手撸Lombok之后,算是明白了疑惑② =-=-=-=-=-=-=-=-=-=-=-=-=-=-以下内容为转载内容-=-=-=-=-=-=-=-=-=-=-=-=-=-= 参考地址: 99%的程序员都在用Lombok,原理竟然这么简单?我也手撸了一个!|建议收藏 我们实现一个简易版的 Lombok 自定义一个 Getter 方法,我们的实现步骤是: ①自定义一个注解标签接口,并实现一个自定义的注解处理器; ②利用 tools.jar 的 javac api 处理 AST (抽象语法树) ③使用自定义的注解处理器编译代码。 1.定义自定义注解和注解处理器 首先创建一个 MyGetter.java 自定义一个注解,代码如下: import java . lang . annotation . ElementType ; import java . lang . annotation . Retention ; import java . lang . annotation . RetentionPolicy ; import java

Lombok 安装配置及使用方法

梦想的初衷 提交于 2020-04-09 06:10:57
pom.xml 引入依赖 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <!--Feb 07, 2020--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency> IDEA 安装插件及设置 File/Settings/Plugins/Lombok/Install/OK File/Settings/Build,Execution,Deployment/Compiler/Annocation Processors/√ Enable annocation processing 常用注解说明 @Getter/@Setter 注解在属性上,为相应的属性自动生成Getter/Setter方法。 boolean 类型属性生成 isFoo/setFoo; 其他类型属性生成 getFoo/setFoo; 可以通过 AccessLevel 设置访问级别(PUBLIC, PROTECTED, PACKAGE, PRIVATE); 如果该注解放在类上

Lombok: RequiredArgsConstructor not working

我是研究僧i 提交于 2020-04-09 03:47:30
问题 It seems that @RequiredArgsConstructor not working in the code below. Why is it? import java.io.Serializable; import lombok.Data; import lombok.RequiredArgsConstructor; @Data @RequiredArgsConstructor public class User implements Serializable { private String username; /*public User(String username) { this.username = username; }*/ private static final long serialVersionUID = 8043545738660721361L; } I get the error: javax.faces.el.EvaluationException: java.lang.Error: Unresolved compilation

Lombok: RequiredArgsConstructor not working

混江龙づ霸主 提交于 2020-04-09 03:32:26
问题 It seems that @RequiredArgsConstructor not working in the code below. Why is it? import java.io.Serializable; import lombok.Data; import lombok.RequiredArgsConstructor; @Data @RequiredArgsConstructor public class User implements Serializable { private String username; /*public User(String username) { this.username = username; }*/ private static final long serialVersionUID = 8043545738660721361L; } I get the error: javax.faces.el.EvaluationException: java.lang.Error: Unresolved compilation

Lombok: RequiredArgsConstructor not working

为君一笑 提交于 2020-04-09 03:28:58
问题 It seems that @RequiredArgsConstructor not working in the code below. Why is it? import java.io.Serializable; import lombok.Data; import lombok.RequiredArgsConstructor; @Data @RequiredArgsConstructor public class User implements Serializable { private String username; /*public User(String username) { this.username = username; }*/ private static final long serialVersionUID = 8043545738660721361L; } I get the error: javax.faces.el.EvaluationException: java.lang.Error: Unresolved compilation

SpringBoot/Spring使用@Value进行属性绑定(传智播客代码)

巧了我就是萌 提交于 2020-04-06 21:47:54
接上篇: springboot使用ConfigurationProperties注解读取自定义属性(传智播客代码) 部分代码参考上篇,这里用@Value读取值 1、@Value读取数据 @Value支持字面量、Spring EL表达式(#),美元符号($),相比于@ ConfigurationProperties ,他用$取值时需要完全路径 package com.atguigu.bean; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.Map; @Data @AllArgsConstructor @NoArgsConstructor @Component public class Person { /** * * 美元表达式(从配置文件、系统环境变量读取) */ @Value( "${person.lastName}"

springboot使用PropertyResource注解读取指定配置文件的属性(传智播客代码)

只谈情不闲聊 提交于 2020-04-06 09:25:44
接上篇: SpringBoot/Spring使用@Value进行属性绑定(传智播客代码) ConfigurationProperties注解默认会从全局配置文件读取属性 ,当属性多的时候,主配置文件( application.yml、application.properties)会臃肿,因此有必要把某一类别属性单独分开配置 @PropertyResource读取指定配置文件 该注解的value支持string数组,可以填写多个配置文件路径,例如 @PropertyResource(value={"aaa.properties","classpath:bbb.properties"}) Person.java package com.atguigu.bean; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype

springboot读取自定义属性(传智播客代码)

你说的曾经没有我的故事 提交于 2020-04-05 22:33:31
pom.xml <? xml version="1.0" encoding="UTF-8" ?> < project xmlns ="http://maven.apache.org/POM/4.0.0" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 </ modelVersion > < parent > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-parent </ artifactId > < version > 2.2.6.RELEASE </ version > < relativePath /> </ parent > < groupId > com.atguigu </ groupId > < artifactId > demo </ artifactId > < version > 0.0.1-SNAPSHOT </ version

Java Records and Lombok annotation - IntelliJ

六眼飞鱼酱① 提交于 2020-03-23 07:26:07
问题 Just trying a hands-on the java.lang.Record. I have gone through the documentation and the JEP-359 for some understanding. So upon reading about the implicit declaration of the constructor I thought of mixing it up with an existing code generation library - Lombok! Now what I've ended up creating as a minimal reproducible example is this record import lombok.AllArgsConstructor; @AllArgsConstructor public record Java(String version) { } which when compiled using IntelliJ successfully produces

Spring Boot 学习笔记

混江龙づ霸主 提交于 2020-03-22 22:32:46
3 月,跳不动了?>>> Spring Boot Spring Boot 是一个快速开发框架,可以迅速搭建出一套基于 Spring 框架体系的应用,是 Spring Cloud 的基础。 Spring Boot 开启了各种自动装配,从而简化代码的开发,不需要编写各种配置文件,只需要引入相关依赖就可以迅速搭建一个应用。 特点 1、不需要 web.xml 2、不需要 springmvc.xml 3、不需要 tomcat,Spring Boot 内嵌了 tomcat 4、不需要配置 JSON 解析,支持 REST 架构 5、个性化配置非常简单 如何使用 1、创建 Maven 工程,导入相关依赖。 <!-- 继承父包 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.7.RELEASE</version> </parent> <dependencies> <!-- web启动jar --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>