定义过滤器以应用于弹簧上下文文件中的对象集合的最佳实践是什么?
假设我有一组人员 ( Collection<Person> people
)。每个人都有age/name/sex/occupation/email
财产。
我需要根据一些标准和简单的谓词创建这些人的子组。示例分组可能是:
sex=Male
sex=Female && age>30 && occupation=IT
sex=Male && occupation=IT && email endsWith "aol.com"
我可以看到使用 Guava Predicates 执行此操作的相对直接的路线,并Collections2.filter()
通过在代码中定义Predicate(s)
,将它们拉入上下文文件中的集合,并在需要时注入适当的 Predicates 集合。
JFilter
也是一个可能的竞争者,因为您可以将过滤器定义为字符串。LambdaJ 似乎是在 Java 中过滤集合的另一个流行选项,但如何允许从 Spring 上下文驱动过滤逻辑并不明显。
有没有更好的方法来解决这个问题?
请注意,我想避免每次都调用数据库,因为我已经在内存中拥有了我关心的对象集合。