이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 28258|회답: 2

[출처] 실용적 동작: Spring Boot의 AOP는 요청 매개변수 값을 동적으로 수정합니다

[링크 복사]
게시됨 2021. 11. 6. 오후 12:15:55 | | | |
요구사항: 프로젝트는 매개변수가 컨트롤러 메서드에 들어가기 전에 요청 매개변수를 동적으로 수정하고, 현재 사용자의 권한에 따라 요청을 매개변수에 값을 할당해야 하며, 요청 매개변수 수정이 완료되어야 하며, 컨트롤러가 서비스 계층을 호출할 때 요청 매개변수를 조건으로 사용하여 데이터를 쿼리하고 수정할 수 있습니다. 매개변수를 요청하는 경우는 두 가지가 있습니다:

  • 권한이 높은 사용자의 경우, 실제로 요청된 매개변수 값을 사용할 수 있습니다
  • 부분적인 권한만 가진 사람들의 경우, 요청 매개변수 값은 현재 사용자에게 묶인 정보에 따라 동적으로 수정됩니다


처음에는 필터를 통해 구현하려고 했지만, 요청 내용을 직렬화하고 역직렬화하는 것이 너무 번거로웠고, 논리적 판단과 성능 저하도 많이 필요했습니다. 다행히도 Spring은 간단한 코드로 구현할 수 있는 AOP 얼굴 지향 기능을 제공합니다.

우선, maven 프로젝트 pom.xml spring-boot-starter-aop 패키지를 다음과 같이 도입해야 합니다:

패키지가 도입되면 AOP 기능을 사용할 수 있습니다.@Aspect주석.

Aspect 는 5가지 유형의 알림 주석을 지원합니다:

@Before: 사전 알림은 메서드가 실행되기 전에 실행됩니다

@After: 포스트알림, 메서드가 실행된 후 실행됩니다

@AfterRunning: 메서드가 결과를 반환한 후 실행되는 알림을 반환합니다

@AfterThrowing: 예외 알림, 메서드가 예외를 던진 후

@Around: 메서드 실행 주위의 랩어라운드 알림

Request.java 일반적인 요청 래퍼 클래스를 생성하세요:

새로운 UserInfo.java 요청 특정 데이터 클래스를 생성하세요:

현재 요청 헤더에 appid가 있으면 request(appId) 값이 수정되고, 그렇지 않으면 request 매개변수는 변경되지 않습니다. 코드는 다음과 같습니다:

새로운 HomeController 컨트롤러를 만들고 Request가 포함된 요청 매개변수가 포함된 인터페이스를 추가<UserInfo>하면, 코드는 다음과 같습니다:

appId 요청 헤더가 없는 테스트의 경우, 요청 매개변수 appId가 실제 값이며 수정되지 않은 상태입니다. 다음 그림에서 확인할 수 있습니다:



appId 요청 헤더를 추가하려고 시도하면, 다음 그림에서 보듯이 appId 요청 매개변수가 성공적으로 수정된 것을 볼 수 있습니다:



마지막으로 소스 코드를 첨부하세요:하이퍼링크 로그인이 보입니다.





이전의:iPerf3를 사용해 기기 네트워크 통신 속도를 테스트하세요
다음:VMware ESXi에 iDRAC 서비스 모듈 소프트웨어 설치하기
 집주인| 게시됨 2021. 11. 6. 오후 12:21:32 |
Spring AOP에서는 비즈니스 로직이 비즈니스 자체에만 집중하며, 로깅, 성능 통계, 보안 제어, 트랜잭션 처리, 예외 처리 등을 비즈니스 로직 코드와 분리합니다. 이 동작들을 분리함으로써 비즈니스 로직을 안내하지 않는 메서드로 분리하고, 비즈니스 로직 코드에 영향을 주지 않고 이러한 동작을 변경할 수 있기를 기대합니다.
게시됨 2023. 3. 15. 오전 11:11:04 |
zsdfghjkvbjnm
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com