我有一个扩展线程类的类,如下所示:
public class A extends Thread {
public void run() {
System.out.println("in thread");
}
}
我有一个服务类如下:
@Service
public class Service {
public void someMethod() {
.....
}
}
如何在线程类中自动关联服务类示例?
我有一个扩展线程类的类,如下所示:
public class A extends Thread {
public void run() {
System.out.println("in thread");
}
}
我有一个服务类如下:
@Service
public class Service {
public void someMethod() {
.....
}
}
如何在线程类中自动关联服务类示例?
6条答案
按热度按时间pkln4tw61#
有很多方法可以做到这一点。其中一些如下:
答。使用
@Autowired
成员变量为Service
:b。使用
@Autowired
构造函数初始化的成员变量Service
:c。使用
@Autowired
使用setter方法Service
:做检查https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-有关更多详细信息,请参阅factory autowire。
7xzttuei2#
是的,你可以自动连线,正如我们的同事已经建议的那样。但是,我想强调一点:类必须是springbean。只有当类本身由spring管理时,spring才能自动连接某些东西。
一旦您这样做了,您应该了解,默认情况下,spring通过调用
new A()
在初始化过程中,但它不会调用start
为你。另一个有趣的发现是Thread
将只创建一次(默认情况下,所有bean在spring中都是单例的),因此如果您需要A
您可能希望将其声明为原型范围。mi7gmzs63#
你完全可以自动连线。
示例如下。
}
您应该在spring应用程序上下文中注册thread类@component,@service 或者在配置类中通过@bean创建bean。
kyks70gy4#
你的问题的答案是肯定的。可以在线程类中使用autowired。
看看这根线
mbzjlibv5#
你可以让
class A
一个spring组件,然后注入依赖项:也就是说,要特别注意你在房间里做什么
run()
i7uaboj46#
是的,可以在线程类中自动连接示例。
源代码如下: