相关疑难解决方法(0)

将从共享接口继承的多个Spring bean注入服务中的数组

我遇到了一个我在另一个项目中遇到的情况,我不确定Grails中最好的方法.要设置它,这就是我在一个普通的Spring项目中所做的.

我有两个从同一个接口继承的类:

public interface BaseInterface {
    void doSomething();
}

public class Impl1 implements BaseInterface {
    public void doSomething(){
        System.out.println("doing impl 1");
    }
}

public class Impl2 implements BaseInterface {
    public void doSomething(){
        System.out.println("doing impl 2");
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止很标准,我有N豆,我想顺序调用来做工作.(这个例子显然是微不足道的).在另一个Java类中,我可以做一些魔术来将所有bean注入(自动装配)作为数组.

@Autowired(required=false)
    private BaseInterface[] theWorkers;
Run Code Online (Sandbox Code Playgroud)

只要我将它们添加到配置中的bean容器中,这将为我提供一系列工作bean.

现在我想在Grails中做同样的事情.相同的公式不起作用.将@Autowired部分放入服务中,并在resources.groovy中创建Impl1和Impl2似乎不起作用.所以我想知道最好的解决方案是什么:

1)我遗漏了一些简单易用的东西.

2)做一些类似什么的duffymo建议的东西在这里.我在resources.groovy中创建了一个使用自定义工厂的命名bean.该工厂将发出一个包含实现某个接口的所有类的类.我会使用类似于建议来提取符合条件的服务/类,然后让该服务允许某人迭代它的子类来完成工作.

3)为resources.groovy中的每个Impl#类创建一个命名bean,然后只使用它们的不同名称并将它们全部注入到各个类中.这个选项不会真正扩展或给予太大的动力,但会起作用.

grails spring dependency-injection

2
推荐指数
1
解决办法
2625
查看次数

标签 统计

dependency-injection ×1

grails ×1

spring ×1