Spring MVC (Spring Boot)를 사용하여 REST 서비스를 구현 중이며 서비스의 일부 교차 기능을 처리하기 위해 Aspect
을 생성 중이다. 당신이 볼 수 있듯이, 나는 두 가지 방법으로 다른 일을하고있는REST 서비스에서 AOP를 사용한 데이터 검색 최적화
@Around("execution(* com.test.myrestsvc.services.MyService.doSomethingWithUser(..))")
public void aroundDoSomething(ProceedingJoinPoint pjp) throws Throwable {
// retrieve user (the same retrieved in the method) and do something else...
}
:
public void doSomethingWithUser(int userId){
// retrieve user from DB and do something...
}
내 Aspect
클래스에서이 같은 방법
예는이 같은 서비스 방법입니다 같은 사용자 개체, 그래서 사용자가 이미 메인 메서드에서 검색되는 경우에도 동일한 쿼리를 두 번 실행해야합니다.
내 서비스 계층의 특정 메소드에 대해 단일 메소드 호출에 의해 트리거되는 여러 측면이 있습니다.이 경우 사용자 검색이 여러 번 수행됩니다.
그래서 궁금합니다. REST (상태 비 저장) 응용 프로그램의 여러 측면에서 객체를 공유하는 방법이 있습니까? 이러한 상황에서 데이터 액세스를 최소화하기 위해 다른 접근 방식을 제안 할 수 있습니까?
_ "동일한 쿼리를 두 번 실행해야합니다."_ 데이터를로드하는 방법에 따라 다릅니다. 어쩌면 사용자가 이미 캐시 된 것일 수 있습니다. 그렇지 않으면 캐시 할 수 있습니다. @ Cachable을 사용하여. – zeroflagL