Java 带插座参数的构造器自动接线

Java 带插座参数的构造器自动接线,java,spring,dependency-injection,inversion-of-control,autowired,Java,Spring,Dependency Injection,Inversion Of Control,Autowired,我的主代码 public static void main(String[] args) { System.out.println("Hello World!"); ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "DataSource.xml"); App app = applicationContext.getBean(App.class);

我的主代码

public static void main(String[] args) {
    System.out.println("Hello World!");
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
            "DataSource.xml");
    App app = applicationContext.getBean(App.class);
    app.start();
}
还有我的启动方法

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();
    }

}

但是我希望PortService对象是从Spring创建的,而不是直接创建的,因为它有用于通信的db类。我该怎么做。

我过去就是这样做的-

为您的PortService实现一个工厂类

@Service
public class PortServiceFactory {
    private SomeObject someObject;

    @Autowired
    public PortServiceFactory(SomeObject someObject) {
        this.someObject = someObject;
    }

    public PortService getPortService(Socket socket) {
        return new PortService(someObject, socket);
    }
}
在具有start()方法的类中自动关联此工厂

替换

PortService portService = new PortService(socket);

PortService portService = portServiceFactory.getPortService(socket);