ich zwei Federprofile aufweisen, die voneinander unabhängig sind, wie unten:Tag Authentifizierungs-Manager mit optionalem Anbieter Bohne
<beans profile="prof1">
<security:authentication-manager id="authenticationManager" erase-credentials="true">
<security:authentication-provider ref="1" />
<security:authentication-provider ref="2" />
<security:authentication-provider ref="3" />
</security:authentication-manager>
</beans>
<beans profile="prof2" >
<security:authentication-manager id="authenticationManager" erase-credentials="true">
<security:authentication-provider ref="0" />
<security:authentication-provider ref="1" />
<security:authentication-provider ref="2" />
<security:authentication-provider ref="3" />
</security:authentication-manager>
</beans>
Zum Beispiel kann ich Profil auf folgende Weise aktivieren:
|prof1|prof2|
|true |true |
|true |false|
|false|true |
|false|false|
Wenn die letzte Option angegeben ist Frühling beschweren, dass Authentifizierung-Manager ist vermisst.
Um dies zu beheben, suchte ich nach etwas wie "optionale Referenz auf Frühlingsbohne".
nämlich war der Ideenmanager aus dem Profil zu extrahieren wie unten:
<security:authentication-manager id="authenticationManager" erase-credentials="true">
<security:authentication-provider ref="0-optional-reference" />
<security:authentication-provider ref="1" />
<security:authentication-provider ref="2" />
<security:authentication-provider ref="3" />
</security:authentication-manager>
Dann Bohne macht mit dem Namen „0“ als optionale Bohne. Ich habe den folgenden Beitrag Optional Spring bean references gefunden, aber es sieht aus wie jede Option funktioniert nicht für mich, weil ich "Ref" Attribut mit "Wert" wegen der Feder xsd nicht ersetzen kann.
Es wäre gut zu wissen, Optionen, wie kann ich optionale Bean für Authentifizierung-Provider Feder-Tag angeben.
Dank Olivier für die schnelle Antwort. Ich denke nur an den Fall, wenn beide Profile aktiv sind. Und welches wird als gültig angesehen werden. Es sieht so aus, als wären beide Deklarationen, gültig. –
fashuser
Wenn beide Profile aktiv sind, werden die 2 'AuthenticationManagers' für die Injektion verfügbar und haben das gleiche" Gewicht ", was dazu führen kann, dass Spring mehrere Implementierungen eines bestimmten Bean-Typs findet. Um dieses Problem zu lösen, können Sie eines als "primary" markieren: ' ', so dass es Vorrang hat während der Injektionssuche. –
Ich habe dies für Bohnen-Tag versucht, aber es sieht aus wie es nicht von Frühling xsd erlaubt ist, ein solches Attribut zu setzen. Ist es möglich, stattdessen ein anderes Attribut anzugeben? – fashuser