In blueprint.xml
, dichiaro una dipendenza opzionale in questo modo:Progetto: come posso verificare se una dipendenza opzionale è soddisfatta?
<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>
e in RepositoryImpl
, ho
public void setRepositoryListener(RepositoryListener repositoryListener) {
logger.info("Repository listener set");
this.repositoryListener = repositoryListener;
}
Questo metodo viene chiamato da Blueprint, anche quando non v'è alcuna RepositoryListener
servizio, come previsto . Il problema è, come posso verificare in seguito se lo è un servizio?
if (repositoryListener != null) {
repositoryListener.notifyDelete(node);
} else {
logger.warn("No repository listener set!");
}
non funziona, dal momento che non è repositoryListener
null
, ma un proxy Blueprint.
Conoscenza limitata da parte mia, ma esiste qualcosa chiamato che può essere specificato per e probabilmente collegato al proprio bean 'Repository'. –