我正在寻找一种简单的方法来控制声明性服务的实例化。
我想要的是像工厂一样被要求返回组件的实例,但我可以控制实例化。
目前我刚刚找到了ComponentFactory,我可以用给定的字典调用newInstance。但我真正想要的是这样的,假设IComponent是声明性服务接口而MyComponent是实现类
public class MyComponentFactory implements ? {
public IComponent newInstance() {
return new MyComponent("firstParameter", "secondParameter");
}
}
声明式服务是否有类似的可能,或者我是否需要在捆绑激活码中使用我自己的服务注册?
提前致谢
答案 0 :(得分:4)
DS没有提供您正在寻找的实例创建间接级别。 DS将始终使用public no-args构造函数,然后调用指定的activator方法来完成实例初始化。
答案 1 :(得分:0)
此类服务实例化控制的一种替代方法是使用DS和CM的组合。
您必须在DS xml中设置configuration-policy =“require”并使用CM创建一个配置实例,该实例将用于传递包含您需要的所有属性的字典(当然只有DS支持的类型)到创建了服务实例。您甚至可以使用属性文件和Felix File Install进行配置。
如果这还不够,您可以使用另一种方法来跟踪新创建的服务,并在使用CM添加配置后立即调用setup(args)方法。