Java 线程类如何注入依赖项?
在 java 中,线程类无法使用 @autowired 注入依赖项,这是因为线程类不是 spring 管理的 bean。为了解决这个问题,可以使用构造注入的方法。
以下示例代码展示了如何通过构造注入向线程类注入依赖项:
线程类:
public class mythread extends thread { private myinterface myinterface; private myservice myservice; public mythread(myinterface myinterface, myservice myservice) { this.myinterface = myinterface; this.myservice = myservice; } @override public void run() { // 使用注入的依赖项 ... } }
调用:
myinterface myinterface = new myinterfaceimpl(); myservice myservice = new myserviceimpl(); mythread mythread = new mythread(myinterface, myservice); mythread.start();
注入:
在 spring 配置文件中,需要将线程类声明为 bean,并使用构造函数注入依赖项:
<bean id="myThread" class="com.example.mypackage.MyThread"> <constructor-arg ref="myInterface" /> <constructor-arg ref="myService" /> </bean>