Wpis z mikrobloga

#java #spring #programowanie

private static class EchoClientHandler extends Thread {

// fields

private Socket clientSocket;
private PrintWriter out;
private BufferedReader in;
private DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");

private ReportService reportService;

// constructors

public EchoClientHandler(Socket socket) {
this.clientSocket = socket;

}

Potrzebuję pomocy. Mam konstruktor, w którym argumentem jest Socket. Potrzebuję wstrzyknąć klasę ReportService. Jak tego dokonać?
  • 6
@tomex1717: Mozna to zrobić na pare sposobów, np zrob sobie jakas klaske ktora autowire ApplicationContext a później wystaw go przez statyczna metodę i później możesz sobie z tego zabrac beana po nazwie albo po klasie w Twoim EchoClientHandler
@tomp3 nie doprecyzowalem pytania. Powyższa klasa jest inner klasa. Zrobilem to tak ze w outer klasie autowireowalem reportservice i jak tworzę instancje echo clienthandler to przekazuję report service i socketa i konstruktor wyglada tak jak napisal @krasnoludkolo.
@tomex1717: Co nie zmienia faktu, że nadal najlepszym rozwiązaniem jest dodanie zależności i wstrzyknięcie przez konstruktor :) (w rozumieniu Dependency Injection jako wzorzec, a nie jako właściwość kontenera IoC).