在blueprint.xml
,我宣佈一個可選的依賴是這樣的:藍圖:如何檢查是否滿足可選依賴項?
<reference id="RepositoryListener"
interface="ru.focusmedia.odp.server.datastore.api.RepositoryListener"
availability="optional" />
<bean id="Repository"
class="ru.focusmedia.odp.server.datastore.jpa.repository.RepositoryImpl">
<jpa:context property="entityManager" unitname="ODP_Server" />
<tx:transaction method="*" value="Required" />
<property name="repositoryListener" ref="RepositoryListener" />
</bean>
和RepositoryImpl
,我有
public void setRepositoryListener(RepositoryListener repositoryListener) {
logger.info("Repository listener set");
this.repositoryListener = repositoryListener;
}
此方法由藍圖稱爲即使沒有RepositoryListener
服務,如預期。問題是,我以後怎麼檢查是否有一個服務?
if (repositoryListener != null) {
repositoryListener.notifyDelete(node);
} else {
logger.warn("No repository listener set!");
}
不起作用,因爲repositoryListener
不是null
,而是一個藍圖代理。
我的部分知識有限,但有一些名爲的東西可以爲指定,並且可能與您的'Repository' bean相關聯。 –