我需要從彈簧工廠獲取一個具有構造函數參數的對象,並在運行時指定其值。我該怎麼做呢。如果我沒有任何構造函數,這工作得很好。使用構造函數自動裝配對象
@Service
public class PortService implements Runnable {
@Autowired
LeaveProcessor leaveProcessor;
private Socket socket;
public PortService(Socket socket) {
this.socket = socket;
}
public void run() {
PrintWriter writer;
BufferedReader reader;
try {
reader = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String message = reader.readLine();
writer = new PrintWriter(socket.getOutputStream(), true);
writer.println(leaveProcessor.process(message));
writer.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
編輯 - 無構造函數我可以通過直接訪問Autowireed對象leaveProcessor來使其工作。
插座:這是從工廠裝:
public void start() {
try {
ServerSocket mobCom = new ServerSocket(9846);
ExecutorService executorService = Executors.newCachedThreadPool();
while (true) {
Socket socket = mobCom.accept();
PortService portService = new PortService(socket);
executorService.submit(portService);
}
} catch (IOException e) {
e.printStackTrace();
}
}
誰在傳遞'socket' – 2013-04-10 06:53:35
看@Configurable,這將需要aspectj加載時間編織。創建一個由Spring管理的Factory類然後用它來創建對象的最佳選擇。 – gkamal 2013-04-10 06:58:18