【发布时间】:2015-02-23 21:09:51
【问题描述】:
我正在尝试在 OSGi 中运行一个包,而在一个类中我正在使用 @Inject 注释。构建成功,但变量 indexerConfiguration 仍然为空。为什么?
@Named
@Singleton
public class IndexerConfiguration
{
private Indexer indexer;
private Scanner scanner;
private Map<String, IndexCreator> indexers;
@Inject
public IndexerConfiguration( Indexer indexer,
Scanner scanner,
Map<String, IndexCreator> indexers ){
this.indexer = indexer;
this.scanner = scanner;
this.indexers = indexers;
}
public Indexer getIndexer(){
return indexer;
}
第二个类在同一个包中:
public class MyFactory implements ManagedServiceFactory {
public static final String PID = "myPid";
private volatile DependencyManager m_dependencyManager;
private final Map<String, Component> m_components = new HashMap<String, Component>();
@Inject
private IndexerConfiguration indexerConfiguration;
@Override
public String getName() {
return "myBundle";
}
@Override
public void updated(String pid,
@SuppressWarnings("rawtypes") Dictionary properties)
throws ConfigurationException {
if (m_components.containsKey(pid)) {
return;
}
Component component = m_dependencyManager
.createComponent()
.setImplementation(myOwnClass.class)
.add(m_dependencyManager.createConfigurationDependency()
.setPid(pid));
indexerConfiguration.getIndexer(); //this is still null :( why?
m_components.put(pid, component);
m_dependencyManager.add(component);
}
所有导入都正常,构建成功,但是为什么注入不起作用?谢谢
【问题讨论】:
-
OSGi 本身不支持@Inject。您是否正在使用任何应该支持它的框架?
-
......嗯,我虽然......不,不。没有框架:(谢谢