【发布时间】:2017-04-22 21:43:10
【问题描述】:
我可以在 Java 8 forEach 循环中使用 Spring Data JPA 存储库吗?它是线程安全的吗?
public interface MajorModOptRepository extends CrudRepository<MajorModOpt, Long> {
Set<MajorModOpt> findManyByManCodeAndModCode(String manCode, String modCode);
}
这里是 forEach 循环:
@Component
public class MajorModOptsHelper {
@Autowired
private MajorModOptRepository majorModOptRepository;
public void setMajorOpts(@NonNull List<Vehicle> vehicles) {
vehicles.forEach(this::setMajorOpts);
}
// This method is called by above forEach
public void setMajorOpts(Vehicle vehicle) {
...
// Repository method is called here
Set<MajorModOptVO> knownOpts = majorModOptRepository.findManyByManCodeAndModCode(vehicle.getManCode(), vehicle.getModCode());
...
}
}
提前谢谢你。
【问题讨论】:
-
在集合上调用
forEach时不涉及多线程。唯一要记住的是,某些集合,如ArrayList或HashSet在迭代时不得修改,但在使用基于Iterator的for循环时也是如此。 -
它是线程安全的。但是,尽管如此,我更被你即将做的一件坏事所吸引。这只是在
forEach中调用findManyByManCodeAndModCode方法。 :)
标签: java spring java-8 spring-data spring-data-jpa