我有一個現有對象,實際上是一個套接字,並且我希望該套接字是我創建的一個用戶會話的一個實例變量。我如何在彈簧中使用現有對象作爲構造函數參數實例化一個bean
但是,如果我從applicationContext獲取用戶會話作爲bean,我如何指定我希望使用現有套接字創建其'套接字'屬性?
當然,我可以在用戶會話bean上使用setSocket方法,並在創建userSession bean後調用setSocket(套接字)。但是這弄亂了我的接口,因爲實際的類是'UserSessionImpl',它實現了'UserSession'。套接字是一個實現細節,所以我不想讓'setSocket'方法成爲UserSession接口的一部分。
我覺得我失去了一些東西..非常感謝您的幫助!
編輯:發佈代碼的相關部分。
所以我有一段代碼返回這樣的插座:
while (true) {
Socket socket = server.accept();
UserSession userSession = (UserSession)applicationContext.getBean("userSession");
// Without spring I would do this
//UserSession userSession = new UserSessionImpl(socket);
executorService.execute(userSession);
}
我Spring的ApplicationContext中沒有什麼令人興奮的 - 我只是
<bean id="userSession" class="server.UserSessionImpl" scope="prototype"></bean>
EDIT2:在downvoter可以解釋downvote ?似乎我問了一個合理的,有用的問題..?
你可以發佈一些代碼或你的'spring.xml'文件的一部分嗎? – austin