我有一个看起来像这样的可选服务依赖项:
@Component
class TestComponent {
private AtomicReference<TestService> testServiceRef;
@Reference(type = '?')
protected void setTestService(TestService testService) {
testServiceRef.set(testService);
}
protected void unsetTestService(TestService testService) {
testServiceRef.set(null);
}
public void doStuff() {
TestService testService = testServiceRef.get();
if (testService != null)
testService.performSomeTask();
}
}
现在,如果在 testService.performSomeTask() 运行时服务变得未绑定,我有问题,对吗?我需要在所有这些功能中添加同步块,还是有更好的方法来处理这种情况?