2017年不容错过的10+个开源 Java库

Project Lombok

通过注解来减少 Java 中的重复性代码,比如 getter 和 setter、非空检查、生成 Builder 等。

  • val - 终级解决方案!简化 final 局部变量定义。

  • @NonNull - 或者:了解我是怎样停止担心并爱上 NullPointerException 的。

  • @Cleanup - 怎么资源管理:方便而安全地调用 close() 方法。

  • @Getter / @Setter - 不再需要写像 public int getFoo() {return foo;} 这样的代码。

  • @ToString - 不用启动调试器就能观察字段值:让 Lombok 为你生成 toString!

  • @EqualsAndHashCode - 让等值比较变得容易:在项目中由字段实现 hashCode 和 equals。

  • @NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor - 定制构造器:生成无参构造函数,对每个 final/非空 字段产生构造器,对每个字段产生构造器。

  • @Data - 它合并所有注解:相当于对所有字段应用 @[email protected]@Getter,并对所有非 final 字段应用 @Setter,以及应用 @RequiredArgsConstructor!

  • @Value - 简单创意不可变类。

  • @Builder - … 一切都很简单:简单直接地创建对象的 API!

  • @SneakyThrows - 大胆的抛出以前不能轻易抛出的异常!

  • @Synchronized - 正确的同步:不要暴露你的锁。

  • @Getter(lazy=true) 懒加载是种美德!

  • @Log - 舰长日志,星历 24435.7: “这是什么行?”

GitHub,网站

边城 边城翻译于 1天前0人顶  翻译得不错哦! 

Simple Logging Facade for Java

Simple Logging Facade for Java(SLF4J)是对各种日志框架(比如 java.util.logging、logback、log4j 等)的简单门面或者抽象,它让用户可以在开发时使用喜欢的日志框架。

简单地说,库和其它嵌入式组件考虑使用 SLF4J 来记录日志,因为它们不能把自己选用的日志框架强加给用户。另一方面,独立的应用程序就不必在意是否使用 SLF4J。独立的应用程序可以直接使用自己选用的日志框架。在使用 logback 的时候会有一个争议,因为它是使用 SLF4J 来提供日志 API 的。

网站,GitHub,FAQ

JUnitParams

参数化测试

@Test@Parameters({"17, false",              "22, true" })public void personIsAdult(int age, boolean valid) throws Exception {  assertThat(new Person(age).isAdult(), is(valid));}

与标准 JUnit Parametrised 运行器的主要区别:

  • 更明确 - 参数是测试方法的参数,而不是类中定义的字段

  • 更少代码 - 不需要通过构造器来设置参数

  • 可以在一个类里混合参数化或非参数化的方法

  • 参数可以由 CSV 文本提供,也可以由专门的参数提供类提供

  • 参数提供类可以有任意多个参数提供方法,所以你可以对不同的情况分组

  • 可以由测试方法提供参数(而不是其它类或静态方法)

  • 可以在 IDE 中看到实际的参数值(JUnit 的 Parametrised 中只有连续编号的参数)

网站,GitHub,快速开始

边城 边城翻译于 1天前0人顶  翻译得不错哦! 

Mockito

Java 中不错的 mock 框架

//You can mock concrete classes, not just interfaces