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 } } }
빈 DocumentService가 PersonUpdater 및 PersonValidator에 주입되었습니다. PersonUpdater에서 빈은 다른 업데이트 흐름에 사용될 수 있지만 PersonValidator에서는 빈이 만 군문서 검색에 사용 WHEN 법적 연령의 남성 업데이트입니다. 동일한 결과를 얻을 수 있는 가능성 중 하나는 아래 예입니다.
@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<Document>> documentsSupplier) { if (person.isAdult() && person.isMale()) { final var documents = documentsSupplier.get(); //validações necessárias } } }
기능적 인터페이스를 사용하면 Java 애플리케이션의 동작을 사용하기 위한 다양한 옵션이 열립니다! 메소드 인수(예제와 같이)와 일부 클래스의 속성을 통해 더욱 유연하게 사용할 수 있습니다.
한 곳에서만 종속성 주입이 수행되는 것 외에도 다음과 같은 기능이 있습니다.
위 내용은 Dica Java: 기능적 인터페이스 #의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!