美文网首页
SpringBoot整合Lombok及使用

SpringBoot整合Lombok及使用

作者: CodePandaes | 来源:发表于2020-03-12 22:15 被阅读0次

    Lombok项目是一个Java库,它会自动插入您的编辑器和构建工具中,从而为您的Java增光添彩。永远不要再编写另一个getter或equals方法,带有一个注释的类将具有功能全面的生成器,自动执行日志记录变量等等。

    下载和设置

    首先打开IDEA中设置,找到plugin,搜索lombok,点击install下载并应用,最后记得重启IDEA。或者你也可以官网下载安装https://projectlombok.org/download

    添加注解支持 Annotation Processors

    在maven仓库搜索下载(https://mvnrepository.com)并添加Lombok依赖到pom.xml

    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.8</version><!--可以不加版本号-->
    </dependency>
    
    

    注解介绍

    @Data : 自动生成set/get方法,toString方法,equals方法,hashCode方法,不带参数的构造方法 
    @NonNull : 让你不在担忧并且爱上NullPointerException 
    @CleanUp : 自动资源管理:不用再在finally中添加资源的close方法 
    @Setter/@Getter : 自动生成set和get方法 
    @ToString : 自动生成toString方法 
    @EqualsAndHashcode : 从对象的字段中生成hashCode和equals的实现 
    @NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor 
    自动生成构造方法 
    @Value : 用于注解final类 
    @Builder : 产生复杂的构建器api类,可以让你以下面显示的那样调用你的代码,来初始化你的实例对象
    @SneakyThrows : 异常处理(谨慎使用) 
    @Synchronized : 同步方法安全的转化 
    @Log : 支持各种logger对象,使用时用对应的注解,如:@Log4
    

    @Data和@Log注解用的较多
    未使用Lombok管理时实体类User

    public class User {
        private Integer id;
        private String name;
        private String pwd;
        private Double score;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPwd() {
            return pwd;
        }
    
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    
        public Double getScore() {
            return score;
        }
    
        public void setScore(Double score) {
            this.score = score;
        }
    
        public User() {
        }
    
        public User(Integer id, String name, String pwd, Double score) {
            this.id = id;
            this.name = name;
            this.pwd = pwd;
            this.score = score;
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            User user = (User) o;
            return Objects.equals(id, user.id) &&
                    Objects.equals(name, user.name) &&
                    Objects.equals(pwd, user.pwd) &&
                    Objects.equals(score, user.score);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(id, name, pwd, score);
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", pwd='" + pwd + '\'' +
                    ", score=" + score +
                    '}';
        }
    }
    

    添加@Data后

    @Data
    public class User {
        private Integer id;
        private String name;
        private String pwd;
        private Double score;
    }
    

    然后实例化User之后,里面所有方法都可以使用,添加UserController

    @RestController
    @Log4j2
    public class UserController {
    
        //private final Logger logger = LogManager.getLogger(this.getClass());
    
        @GetMapping("/test")
        public User testUser() {
            User user = new User();
            user.setName("zhangsan");
            user.setPwd("123");
            user.setScore(2.0D);
            System.out.println(user.toString());
    
            log.info("info excute");
            log.warn("warn excute");
            return user;
        }
    }
    

    在applicaiton.properties中添加日志输出位置

    logging.file = logs/spring-boot-test-lombok.log
    

    浏览器输入localhost:8080/test

    补充:在User类上添加@Builder

    User user = User.builder()
                    .id(1)
                    .name("aaa")
                    .pwd("bbb")
                    .score("bbb")
                    .build();
    
    System.out.println(user);
    

    相关文章

      网友评论

          本文标题:SpringBoot整合Lombok及使用

          本文链接:https://www.haomeiwen.com/subject/ypbwjhtx.html