>Java >Java Spring Boot 컨트롤러의 RequestHeader 중복

Java Spring Boot 컨트롤러의 RequestHeader 중복

WBOY
WBOY앞으로
2024-02-06 11:36:10618검색
질문 내용

Java로 작성된 나머지 컨트롤러 세트가 있습니다. 원래 요구 사항은 일부 엔드포인트에 헤더를 추가하는 것이었지만 거의 모든 나머지 컨트롤러에 이러한 헤더 필드를 추가하기로 결정했습니다. 이제 프로젝트에는 100개가 넘는 유사한 API가 포함되어 있습니다.

으아악

사용자, GUID, 호출자, 언어를 튜플하는 것은 소스 코드의 모든 곳에 있다는 것이 코드에서 명백하지만, 코드를 리팩터링하여 "한 곳"에 배치하거나 더 풍부하게 만드는 방법은 그렇지 않습니다. 유지 관리 가능. 예를 들어 5번째 매개변수를 추가해야 한다면 100개의 API를 사용해야 합니다.

Java Spring Boot에서 이를 수행하는 표준 방법은 무엇입니까?

이상적으로는 다음과 같은 것을 원합니다:

으아악

어떤 아이디어가 있나요? 컨트롤러 제안? 다른 건 없어?


정답


스프링 부트 애플리케이션에서 코드 중복 문제를 해결하고 코드를 더 쉽게 유지 관리하려면 사용자 정의 필터를 만들어 공개 헤더가 컨트롤러에 도달하기 전에 추출하고 처리할 수 있습니다. 또한 코드의 가독성과 유지 관리성을 향상시키기 위해 헤더 매개변수를 객체로 캡슐화할 수도 있습니다.

요약하자면, 스프링 부트 컨트롤러에서 공통 헤더를 균일하게 적용하기 위해 requestheaders dto、实现 customheaderfilter 并将其注册到 filterregistrationbean를 생성하여 헤더 처리를 중앙 집중화합니다.

추천 방법은 다음과 같습니다.

  1. 헤더 dto 생성(데이터 전송 객체):

    공개 헤더 매개변수를 나타내는 클래스를 정의합니다. 이 클래스는 헤더에서 추출된 값을 보유합니다.

    으아악
  2. 필터 만들기:

    필터를 구현하여 들어오는 요청을 가로채고 공개 헤더를 추출한 다음 요청 속성에 저장하세요.

    으아악
  3. filterregistrationbean을 사용하여 필터를 등록하세요.

    기본 애플리케이션 클래스에서 filterregistrationbean를 사용하여 사용자 정의 필터를 등록하세요.

    으아악

    필터를 적용하려는 URL과 일치하도록 addurlpatterns 방법을 사용자 정의하세요.

  4. dto를 사용하도록 컨트롤러 수정:

    별도의 헤더 매개변수 대신 requestheaders dto를 사용하도록 컨트롤러를 수정하세요.

    으아악

이제 새 헤더 매개변수를 추가하거나 변경해야 하는 경우 requestheaders 클래스 및 필터 로직만 업데이트하면 됩니다. 이 접근 방식은 헤더 처리를 중앙 집중화하고 유지 관리성을 향상시킵니다.

위 내용은 Java Spring Boot 컨트롤러의 RequestHeader 중복의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제