gpt4 book ai didi

java - Spring规范的谓词应该是静态的吗?

转载 作者:行者123 更新时间:2023-12-01 11:04:39 24 4
gpt4 key购买 nike

Spring 规范谓词应该是静态还是非静态?

默认实现类似于以下内容:

public static Specification<Customer> byCustomerName(String name) {
return new Specification<Customer>() {
@Override
public Predicate toPredicate(Root<BasePricingCache> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
return cb.equal(root.get(Customer_.name), name);
}
};
}

但这也可以重构为:

private static final CUSTOMER_SPEC = return new Specification<Customer>() {
@Override
public Predicate toPredicate(Root<BasePricingCache> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
return cb.equal(root.get(Customer_.name), name);
}
};

public static Specification<Customer> byCustomerName(String name) {
return CUSTOMER_SPEC;
}

应该优先选择什么? 规范是线程安全的并且可以这样使用吗?

最佳答案

你重构的代码甚至无法编译。有一个多余的返回,CUSTOMER_SPEC 没有类型,并且您引用的 name 变量在作用域中不存在。

我认为您在这里过度思考了这个问题,并且正在进行微观优化。将规范保留在静态工厂方法中应该没问题。

关于java - Spring规范的谓词应该是静态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33076140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com