在 java 在开发应用程序时,在不同的位置对同一个应用程序 bean 依赖注入是很常见的,通常是 bean 依赖注入之间的关系,如下所示:
@service @requiredargsconstructor public class personupdater { private final personvalidator validator; private final documentservice documentservice; //outras utilizações no fluxo de atualização public person toupdate(final person person) { validator.validate(person); //...fluxo de atualização de pessoa return person; } }
@component @requiredargsconstructor public class personvalidator { private final documentservice documentservice; public void validate(final person person) { if (person.isadult() && person.ismale()) { final var documents = documentservice.getmilitarydocuments(person.getid()); //validações necessárias } } }
bean documentservice 被注入到 personupdater 和 personvalidator 中。在 personupdater 中,bean 可用于其他更新过程,但在 personvalidator 中,bean 将only 什么时候用来搜索军事文件,是法定年龄男性的更新。结果相同的可能性如下:
@service @requiredargsconstructor public class personupdater { private final personvalidator validator; private final documentservice documentservice; //outras utilizações no fluxo de atualização public person toupdate(final person person) { validator.validate(person, () -> documentservice.getmilitarydocuments(person.getid())); //...fluxo de atualização de pessoa return person; } }
@Component @RequiredArgsConstructor public class PersonValidator { public void validate(final Person person, final Supplier<list>> documentsSupplier) { if (person.isAdult() && person.isMale()) { final var documents = documentsSupplier.get(); //validações necessárias } } } </list>
通过函数接口,出现了一系列使用java应用程序行为的选项!它们通过方法参数(如示例)和某些类别的属性使用更灵活。
除了在一个地方完成依赖注入外,我们还有:
- 减少验证器耦合
- 提高方法的灵活性
以上是Dica Java:函数式接口 #详情请关注图灵教育的其他相关文章!