0

我的主要代码

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 类。我该怎么做。

4

1 回答 1

0

我过去通过这样做实现了这一点 -

为您的 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);
于 2013-04-10T07:57:11.720 回答