Dependency injection 如何在karaf中检测修改的注入服务?
我有一个服务a,它通过依赖项注入依赖于服务b。服务B在其关联的配置文件更改时运行@Modified方法。更新服务B的配置文件时,如何让服务A重新启动?也许有某种方式可以让serviceA检索所有消费服务的列表 服务BDependency injection 如何在karaf中检测修改的注入服务?,dependency-injection,osgi,apache-karaf,Dependency Injection,Osgi,Apache Karaf,我有一个服务a,它通过依赖项注入依赖于服务b。服务B在其关联的配置文件更改时运行@Modified方法。更新服务B的配置文件时,如何让服务A重新启动?也许有某种方式可以让serviceA检索所有消费服务的列表 服务B @Component( name = "my.services.ServiceB", immediate = true, configurationPolicy = ConfigurationPolicy.REQUIRE ) @Desig
@Component(
name = "my.services.ServiceB",
immediate = true,
configurationPolicy = ConfigurationPolicy.REQUIRE
)
@Designate(
ocd = ServiceBConfig.class
)
public class ServiceBImpl implements ServiceB {
public ServiceBImpl() {}
@Activate
@Modified
protected void start(ServiceBConfig serviceBConfig) {
// code
}
}
服务A
@Component(
immediate = true,
designateFactory = ServiceAConfig.class,
name = "my.services.serviceA"
)
public class ServiceAImpl implements ServiceA {
private ServiceB serviceB;
private ConfigurationAdmin configurationAdmin;
@Reference
void setServiceB(ServiceB serviceB) {
this.encryptionService = encryptionService;
}
@Reference
public void setConfigurationAdmin(ConfigurationAdmin admin) {
this.configurationAdmin = admin;
}
@Activate
@Modified
void activate(BundleContext bundleContext, Map<String, Object> configuration) {
// code
}
}
@组件(
立即=真,
designateFactory=ServiceAConfig.class,
name=“my.services.serviceA”
)
公共类ServiceAImpl实现ServiceA{
私人服务b服务b;
私有配置管理员配置管理员;
@参考文献
无效设置服务B(服务B服务B){
this.encryptionService=encryptionService;
}
@参考文献
public void setConfigurationAdmin(ConfigurationAdmin){
this.configurationAdmin=admin;
}
@激活
@修改
无效激活(BundleContext BundleContext,地图配置){
//代码
}
}