2015-02-05 47 views
0

在我的應用程序中,我有無狀態方法的服務類只能在方法參數中運行。如何避免需要將相同的參數傳遞給所有方法?

我的問題是,許多這些方法調用需要用戶和應用程序請求它的外部API。

一個簡單的解決方案是將這些參數添加到所有的服務方法,是這樣的:

class RequestInformation{ 
    private String user; 
    private String application; 
} 

class SomeService{ 
    foo(requestInformation, methodParamA, methodParamB) 
    bar(requestInformation, methodParamA, methodParamB, methodParamC) 
} 

我不知道,如果添加相同RequestInformation參數在所有服務類的所有方法是一個好主意。

還有其他方法可以用來避免在所有方法中都有RequestInformation嗎?

回答

1

在你問題中有SPRING TAG,所以假設你正在使用Spring。

您可以將請求特定的信息存儲到會話作用域bean中。因此,這將是新的實例爲每個請求:

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-factory-scopes-request

這些bean可以被裝配到任意Spring Bean。

+0

我的解決方案是使RequestInformation會話作用域並使用作用域代理將其注入到單例服務類中。 – 2015-02-08 06:43:43