gpt4 book ai didi

java - 使用 Java 配置的 Setter 注入(inject)

转载 作者:行者123 更新时间:2023-11-30 10:11:28 28 4
gpt4 key购买 nike

我有一个 Runnable(即一个实现 Runnable 的类)。有一个 SpringBean,我在其中通过调用其 Contstructor 使用此 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

@Named
Class TestSpringBean {

public void someMethod(){
Object a;
new RunTest(a)
}

}

我可以在 TestSpringBean 中注入(inject) RunTestClass 并使用吗?

最佳答案

将类RunTest标记为一个@Component,将其实例注入(inject)到类TestSpringBean中,并在方法中完成配置>一些方法*:

@Component
class RunTest implements Runnable {
public RunTest() {}
}

class TestSpringBean {

@Autowired
private RunTest runnable;

public void someMethod() {
...
runnable.set(a);
}

}

*请注意,您应该获得一个已经配置好的组件,因此不需要其他配置。这是一个单例实例,因此这里的更改也会反射(reflect)在其他地方。

换句话说,单例应该保持无状态。这就是为什么应该通过找到一种方法来获取完整对象或从任务类中排除该对象来修改这个简单的解决方案。

**您可以将范围更改为"prototype",但Spring 仍然无法提供完全配置的实例。这就提出了一个问题:Spring 到底应该管理这个类吗?

***正如@lucumt 所指出的,确保该类对于组件扫描机制是可见的。

关于java - 使用 Java 配置的 Setter 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52423886/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com