2016-10-30 9 views
0

私はspring aopを使用してジャージリソースメソッドをインターセプトしようとしています。私はapiバージョン管理を実装したいところです。要求を最新バージョンに変換し、リソースメソッドでいくつかの作業を行い、要求されたAPIバージョンへの応答を変換します。Spring aopでジャージリソースメソッドをインターセプト

現在、私は春とジャージを使用しています。私はジャージーリソースメソッドを傍受するためにspring aopを使用しようとしました。そして、一見してそれは動作していたようです。しかし、私は1つの問題に気づいた。

jersey(例:@Context HttpHeaders)を介してRootResourceクラスに注入されたものはすべて、spring aopを使用するとnullです。アドバイスメソッドとリソースメソッドの両方で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; 
    } 
} 

スプリングAOPインターセプター:

@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

関連する問題