2011-08-29 46 views
1

我剛剛爲Jersey創建了一個InjectableProvider的實現,但我發現completeley設置了需要Spring工廠bean支持的注入。我正在尋找一種將該工廠作爲字段注入提供者類的方法。我嘗試過使用@Component註釋,但是失敗時出現IllegalState異常(沒有範圍註冊爲範圍'請求'))如何注入一個spring bean到Jersey InjectableProvider

什麼是正確的方法來處理?或者有沒有辦法從Jerseys HTTPcontext重新獲得應用程序上下文?

回答

0

這是爲時已晚,但我討厭看到沒有答案的問題。

通常,在你的工廠豆你應該有:

@Component 
public class FactoryBean(){} 

和您的供應商,你應該使用

public class Provider extends InjectableProvider<Context>{ 
     @InjectParam 
     private FactoryBean factoryBean; 
} 

在第一個想到的,你會認爲你應該使用@Autowired,因爲它是Spring的「組件」 - 但是因爲我們將它連接到一個Jersey實例化的bean中,所以應該使用Jersey的@InjectParam。

+0

注意,InjectableProvider實現中包含的「Context」是通常與URIInfo和HttpRequest對象一起使用的Jersey註釋@Context。 – ninnemannk