`

lombok精简代码

    博客分类:
  • java
 
阅读更多

最近项目组在重构目前的工程,将H5的后台服务和PC上的服务合并,在重构过程中,想加入一些新鲜是元素,于是就发现了这个能够精简代码的东东~

 

关于Lombok这个东西,论坛里已经有人介绍过,我也是通过别人帖子了解到这个小工具:
http://www.iteye.com/topic/798305
不过作者以免写Getter/Setter为题来介绍Lombok的优势,看了后面的评论之后,觉得这个工具意义不大.
后来在博客在线看到一篇文章,期中提到了Lombok工具.这个工具已经被国外创业者所使用,随之对其产生了很浓厚的兴趣.
 
关于如何介绍Lombok这个工具,自己想了半天,觉得实在比不过作者在首页提供的视频介绍:
http://projectlombok.org/
 
ok~ 写了这么多Lombok到底是什么东西,他具体能带来什么便利呢?
Lombok主要是提供一套注解,根据注解在编译时生成相关代码,目前提供如下注解:

 

@Getter / @Setter
永远不用再写 public int getFoo() {return foo;}.
@Getter(lazy=true)
Laziness is a virtue!
@ToString
Lombok会根据field自动生成toString 方法,这个对调试来说很方便! 这个注解生成的toString格式:

LombokUser(id=001, name=wity_lv, email=wity_lv@sample.com)  

 

@EqualsAndHashCode
生成 hashCode and equals 方法.
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
Constructors made to order: Generates constructors that take no arguments, one argument per final / non-null field, or one argument for every field.
@Data
All together now: A shortcut for @ToString, @EqualsAndHashCode, @Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor!
@Cleanup
Automatic resource management: Call your close() methods safely with no hassle.
@Synchronized
synchronized done right: Don't expose your locks.
@SneakyThrows
To boldly throw checked exceptions where no one has thrown them before!
@Log
支持多种Log工具, 我平时用@Log4j注解
val
Finally! Hassle-free final local variables.
@Delegate
Don't lose your composition.

 

如何使用?

1. 从项目https://github.com/mplushnikov/lombok-intellij-plugin 首页下载lombok-plugin-0.9.8.14.zip

2.  using Preferences > Plugins > Install plugin from disk...将其安装到intellij 中(该项目需要jdk1.6+的环境) 

3. Maven依赖:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.6</version>
    <scope>provided</scope>
</dependency>

  

使用lombok项目的方法很简单,分为四个步骤:
1)在需要自动生成getter和setter方法的类上,加上@Data注解
2)在编译类路径中加入lombok.jar包
3)使用支持lombok的编译工具编译源代码(关于支持lombok的编译工具,见“四、支持lombok的编译工具”)
4)编译得到的字节码文件中自动生成了getter和setter方法

 

 

package lv.sample.lombok;  
  
import lombok.AllArgsConstructor;  
import lombok.Data;  
import lombok.NoArgsConstructor;  
import lombok.extern.log4j.Log4j;  
  
@Data  
@NoArgsConstructor  
@AllArgsConstructor  
@Log4j  
public class LombokUser {  
      
    private String id = null;  
    private String name = null;  
    private String email = null;  
      
    public static void main(String[] args) {  
        log.info("test the lombok bean");  
          
        LombokUser u = new LombokUser("001", "wity_lv", "wity_lv@sample.com");  
        System.out.println(u.toString());  
          
        LombokUser u2 = new LombokUser("001", "wity_lv", "wity_lv@sample.com");  
        System.out.println(u.equals(u2));  
    }  
}  

 

到这里 ~ 这些仅仅只是作者提供一些方便的注释, 当然我们可以fork这个项目的 GitHub, 研究内部原理,构建适合自己团队的Lombok:
https://github.com/rzwitserloot/lombok 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics