En blueprint.xml
, declaro una dependencia opcional de esta manera:Blueprint: ¿cómo puedo verificar si se cumple una dependencia opcional?
<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>
y en RepositoryImpl
, tengo
public void setRepositoryListener(RepositoryListener repositoryListener) {
logger.info("Repository listener set");
this.repositoryListener = repositoryListener;
}
Este método es llamado por Blueprint, incluso cuando no hay RepositoryListener
servicios disponibles, como se esperaba . El problema es, ¿cómo puedo verificar más adelante si hay en un servicio?
if (repositoryListener != null) {
repositoryListener.notifyDelete(node);
} else {
logger.warn("No repository listener set!");
}
no funciona, ya que no es repositoryListener
null
, pero un proxy Blueprint.
Conocimiento limitado de mi parte, pero hay algo llamado que se puede especificar para y probablemente esté vinculado a su 'Repository' bean. –