猿问

使用 Java 配置的 Setter 注入

我有一个 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


@Named

Class TestSpringBean {


    public void someMethod(){

        Object a;

        new RunTest(a)

    }


}

我可以在 TestSpringBean 中注入 RunTestClass 并使用。


慕桂英4014372
浏览 131回答 2
2回答

蓝山帝景

将类标记RunTest为a @Component,将其实例注入到类中TestSpringBean,完成方法someMethod*中的配置:@Componentclass RunTest implements Runnable {    public RunTest() {}}class TestSpringBean {    @Autowired    private RunTest runnable;    public void someMethod() {        ...        runnable.set(a);    }}*请注意,您应该获得一个已经配置好的组件,因此不需要其他配置。这是一个单例实例,所以这里的变化也会反映在其他地方。换句话说,单身人士应该保持无状态。这就是为什么这个简单的解决方案应该通过找到一种获取完整对象的方法或从任务类中排除该对象来修改的原因。**您可以将范围更改为"prototype",但 Spring 仍然无法提供完全配置的实例。这就提出了一个问题:Spring 是否应该管理这个类?***正如@lucumt 所指出的,确保该类对于组件扫描机制是可见的。
随时随地看视频慕课网APP

相关分类

Java
我要回答