,我有以下豆在我contexs:两个bean具有相同名称在不同的上下文
<!-- Context 1 -->
<beans profile="ldap">
<bean id="activeDirectoryAuthProvider" class="com.production.ActiveDirectoryLdapAuthenticationProvider">
<constructor-arg value="${ldap.login.provider.domain}"/>
<constructor-arg value="${ldap.login.provider.url}" />
<property name="useAuthenticationRequestCredentials" value="true" />
<property name="convertSubErrorCodesToExceptions" value="true" />
</bean>
</beans>
<!-- Context 2 -->
<bean id="activeDirectoryAuthProvider" class="com.test.TestActiveDirectoryLdapAuthenticationProvider">
<constructor-arg value="${ldap.login.provider.domain}"/>
<constructor-arg value="${ldap.login.provider.url}" />
<property name="useAuthenticationRequestCredentials" value="true" />
<property name="convertSubErrorCodesToExceptions" value="true" />
</bean>
我的目标是使用第一个bean只为量产版另一个用于测试目的。
即我开始测试基于生产上下文我期望生产bean将被测试bean替换为所需的配置。
但不幸的是,当我试图创建两个具有相同名称的bean时,只有生产bean被创建,而另一个被忽略。另一件事,我注意到,当我试图将测试bean名称更改为:activeDirectoryAuthProvider1然后这两个bean都成功创建。任何人都可以解释为什么会发生,并建议可能的解决方案如何绕过它?
是的,我们已经使用了两种不同的上下文,即测试环境包括生产环境。最初的想法是使用除dataSource之类的几个bean之外的所有生产bean ...以避免在项目周围重复使用bean。 – fashuser 2015-03-03 11:12:13
应该可以有3个配置文件: 文件1:仅生产豆 文件2:仅开发豆 文件3:共享豆(开发和生产) – Giovanni 2015-03-03 12:41:42