这是我的ConfigUpdater类
private final class ConfigUpdater implements ManagedService {
@SuppressWarnings("rawtypes")
@Override
public void updated(Dictionary config) throws ConfigurationException {
if (config == null) {
return;
}
String title = ((String)config.get("title"));
}
}
我的问题是如何在任何其他类中访问字符串标题?或者如何在任何其他类中获取配置字典...只有在更改配置文件时才会调用更新的方法...一旦更改,如何在其他类中访问其数据?
答案 0 :(得分:1)
通常,您将创建一个将这些属性公开给其他组件的服务。
例如,您可以为ConfigUpdater提供第二个界面。另一个组件可以从服务注册表中查找/注入此接口,并使用它的方法来访问属性。
我在GitHub上创建了一个示例项目:https://github.com/paulbakker/configuration-example
最重要的部分是实现ManagedService和自定义接口的服务:
@Component(properties=@Property(name=Constants.SERVICE_PID, value="example.configurationservice"))
public class ConfigurationUpdater implements ManagedService, MyConfiguration{
private volatile String message;
@Override
public void updated(@SuppressWarnings("rawtypes") Dictionary properties) throws ConfigurationException {
message = (String)properties.get("message");
}
@Override
public String getMessage() {
return message;
}
}
然后可以像这样使用配置:
@Component(provides=ExampleConsumer.class,
properties= {
@Property(name = CommandProcessor.COMMAND_SCOPE, value = "example"),
@Property(name = CommandProcessor.COMMAND_FUNCTION, values = {"showMessage"}) })
public class ExampleConsumer {
@ServiceDependency
private volatile MyConfiguration config;
public void showMessage() {
String message = config.getMessage();
System.out.println(message);
}
}