2016-10-30 4 views
0

Я пытаюсь использовать 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; 
    } 
} 

ответ

0

хорошо, так это выглядит, как это ошибка в Джерси-spring3. Issue

Существует пр., Чтобы исправить это, но без комментариев. Я пытаюсь объединить это. Github PR

+0

Вы можете принять ваш собственный ответ, чтобы закрыть вопрос. – kriegaex

Смежные вопросы