我有一个 Runnable(即一个实现 Runnable 的类)。有一个 SpringBean,我通过调用它的构造函数来使用这个 Runnable。我想让这个 Runnable 成为一个 Spring Bean。前任。Class RunTest implements Runnable { Object object; public RunTest(Object a){ this.object=a; } public void run() { //using attributes of a }}现在我有一个 Spring Bean@NamedClass TestSpringBean { public void someMethod(){ Object a; new RunTest(a) }}我可以在 TestSpringBean 中注入 RunTestClass 并使用。
2 回答
蓝山帝景
TA贡献1843条经验 获得超7个赞
将类标记RunTest为a @Component,将其实例注入到类中TestSpringBean,完成方法someMethod*中的配置:
@Component
class RunTest implements Runnable {
public RunTest() {}
}
class TestSpringBean {
@Autowired
private RunTest runnable;
public void someMethod() {
...
runnable.set(a);
}
}
*请注意,您应该获得一个已经配置好的组件,因此不需要其他配置。这是一个单例实例,所以这里的变化也会反映在其他地方。
换句话说,单身人士应该保持无状态。这就是为什么这个简单的解决方案应该通过找到一种获取完整对象的方法或从任务类中排除该对象来修改的原因。
**您可以将范围更改为"prototype",但 Spring 仍然无法提供完全配置的实例。这就提出了一个问题:Spring 是否应该管理这个类?
***正如@lucumt 所指出的,确保该类对于组件扫描机制是可见的。
添加回答
举报
0/150
提交
取消