1

使用 Apache Felix 4.2.1 iPOJO 1.11.0。

需要在用户请求时以编程方式创建组件实例。但我不能在静态工厂方法中使用非静态字段。

@Component
@Provides(specifications = {IProcessSearch.class})
public class ProcessSearch implements IProcessSearch {
    ...
    @Requires(filter = "(factory.name=ProcessSearch)")
    private Factory mProcessSearchFactory;
    ...
    /**
     * Factory methods for receive new component instance:
     */
    public static ProcessSearch createInstance() {
        return createInstance(null);
    }
    public static ProcessSearch createInstance(Properties pProperties) {
        InstanceManager lInstanceManager = (InstanceManager) mProcessSearchFactory.createComponentInstance(pProperties);
        return (ProcessSearch) lInstanceManager.getPojoObject();
    }

1)如果我理解正确,那么带有@Requires 注释的字段不能是静态的。如何创建获取属性并接收新组件实例的工厂方法?

2)这样做是正常的做法吗?

4

1 回答 1

1

这样做,您需要提供自己的创作策略。此策略应用于提供的服务 (@Provides) 而不是消费者端 (@Requires)。

更多信息: http: //felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/providing-osgi-services.html#service-serving-object-创建

于 2013-11-28T08:10:46.880 回答