我创建了一个接口,两个不同的服务正在实现。
考虑接口被命名为 CheckReference 并且两个不同的类 CheckReferenceImpl1 和 CheckReferencImpl2 正在实现它。
@Component
@Service(value = CheckReference.class)
@Property(name = "domain", value = "ref1")
public class CheckReferenceImpl1 implements CheckReference
还有一个,
@Component
@Service(value = CheckReference.class)
@Property(name = "domain", value = "ref2")
public class CheckReferenceImpl2 implements CheckReference
现在我想根据我的需要动态地使用 @Reference 注释动态加载实现。所以,在检查条件下
public class LoadReference {
@Reference
CheckReference checkReference
if(check) {
// load checkReferencImpl1
} else {
// load checkReferenceImpl2
}
}
我也知道我可以使用目标属性来加载特定的实现。但那是静态的方式。但是为了动态地做到这一点,无法与规范和教程联系起来,我应该怎么做?