原文地址:rieckpil.de/howto-generate-random-data-in-java-using-java-faker/
原型开发好以后,通常需要一些展示数据。如果没有实际数据,怎样为 Java 程序生成一些有意义的随机数据?
我用过 UUID 和 ThreadLocalRandom 来生成随机数,但是能力有限,无法提供特定领域的随机数据。于是,我开始寻找更好的解决方案。最后找到了 Faker 这个好东西,幸运的是有 Java 版本:Java Faker。不仅使用方便,而且可以设置多个领域,几秒钟内生成需要的随机数。
1. Java Faker 上手
在 Maven项目中添加 Java Faker 依赖:
1 | <dependency> |
使用前,创建一个 Faker 对象:
1 | Faker faker = new Faker(); |
Faker 方法调用时会随机访问底层数据,因此不需要每次都创建一个实例。Java Faker 通过/src/main/resources
中的.yml
获取数据。
使用 Faker 可以访问30多个不同的领域,为几乎每个用例创建随机数。可以使用流式 API 生成随机数:
1 | String firstName = faker.name().firstName(); |
包含的领域有:
- 金融
- 视频
- 书籍
- 姓名
- 地址
- 商务
- …
此外还包含一些有趣的领域:
- 尤达
- 查克·诺里斯
- 哈利·波特
- 指环王
- …
2. Java Faker 使用示例
为了演示 Java Faker,这里通过一个 REST API 返回随机数量的 person、book 和 food 对象。虽然示例采用了 Spring Boot 2.1 和 Java 11,但是其他版本也可以正常工作。
示例应用提供了不同的 Endpoint 获取随机数据:
1 |
|
3. 返回本地化随机数据
随机数据的默认 locale 是 EN。此外,Faker 库还支持返回本地化随机数据。如果指定了 locale 请确保在开发库的支持列表中。可以检查对应的 .yml 文件确认已经有对应的英文版本。
如果指定的 locale 没有对应的翻译,比如 beers,默认会切换到英文。
Faker 构造函数参数默认为 locale:
1 | Faker faker = new Faker(new Locale("de")); |
上面的代码指定返回的随机数据为德语:
1 | "/foods") ( |
也可以设为列出的其他 locale:
1 | "/books") ( |
示例完整源代码可以在 GitHub 上找到:
github.com/rieckpil/blog-tutorials/tree/master/random-data-in-java-using-java-faker