In blueprint.xml
erkläre ich eine optionale Abhängigkeit auf diese Weise:Blueprint: Wie überprüfe ich, ob eine optionale Abhängigkeit erfüllt ist?
<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>
und in RepositoryImpl
, ich habe
public void setRepositoryListener(RepositoryListener repositoryListener) {
logger.info("Repository listener set");
this.repositoryListener = repositoryListener;
}
Diese Methode wird von Blueprint auch genannt wird, wenn es keine RepositoryListener
Dienst verfügbar ist, wie erwartet . Das Problem ist, wie kann ich später überprüfen, ob ein Service ist?
if (repositoryListener != null) {
repositoryListener.notifyDelete(node);
} else {
logger.warn("No repository listener set!");
}
nicht funktioniert, da repositoryListener
nicht null
, sondern ein Blueprint-Proxy.
begrenzte Kenntnisse von mir, aber es ist etwas, genannt, die für angegeben werden kann und wahrscheinlich zu 'Repository' Bean verknüpft werden. –