【发布时间】:2016-07-08 01:07:05
【问题描述】:
我有两个相互独立的弹簧轮廓,如下所示:
<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>
例如,我可以通过以下方式启用配置文件:
|prof1|prof2|
|true |true |
|true |false|
|false|true |
|false|false|
当指定最后一个选项时,spring 会抱怨 authentication-manager 丢失。
为了解决这个问题,我寻找了类似 “对 spring bean 的可选引用”。
即想法是从配置文件中提取经理,如下所示:
<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>
然后将名称为“0”的bean作为可选bean。我找到了以下帖子Optional Spring bean references,但看起来任何选项都对我不起作用,因为由于 spring xsd,我无法将“ref”属性替换为“value”。
如果知道任何选项会很好我如何为 authentication-provider spring 标签指定可选 bean。
【问题讨论】:
标签: java spring spring-security xsd-validation