Я пытаюсь использовать spring aop для перехвата моих методов ресурса майнинга. Я хочу реализовать api-версию, где я преобразовываю запрос в последнюю версию, выполняю некоторую работу в методе ресурсов, а затем преобразовываю ответ в запрошенную версию api.Перехват методов ресурса Джерси с помощью Spring aop
В настоящее время я использую весну и майку. Я попытался использовать spring aop, чтобы перехватить методы ресурса Джерси, и на первый взгляд он, казалось, работал. Однако я заметил 1 проблему.
Все, что вводится в класс RootResource через трикотаж (например, @Context HttpHeaders), имеет значение null при использовании Spring aop. Он имеет значение null как в методе консультаций, так и в методе ресурсов. Когда я отключу aop, свойства вводятся правильно и доступны в методе ресурсов.
Любые идеи о том, что происходит и как это исправить?
класс RootResource:
@Component
@Path("test")
public class RestService extends BaseService {
@Autowired
RestService(MyClass myclass) {
super(myclass);
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("{param1}")
public Integer get(@PathParam("param1") Integer param1) {
// I can access myClass fine, but headers and context are null!
return param1;
}
}
BaseService класс:
public abstract class BaseService {
@Context
public HttpHeaders headers;
@Context
protected ServletContext context;
protected MyClass myClass;
BaseService(MyClass myClass) {
this.myClass = myClass;
}
}
весна АОП перехватчик:
@Aspect
public class Test {
@Around("execution(* biocode.fims.rest.services..*.*(..))")
public Object transformRequest(ProceedingJoinPoint jp) throws Throwable {
BaseService baseService = (BaseService) jp.getTarget();
I can access myClass fine, but headers and context are null;
Object val = jp.proceed();
return val;
}
}
Вы можете принять ваш собственный ответ, чтобы закрыть вопрос. – kriegaex