我一直在尝试使用Spring 3.1 的 bean 定义配置文件和嵌套 bean。我曾希望我可以根据活动配置文件定义不同的 bean。考虑以下过度简化的示例,以便我的 Spring 上下文包含类似
<bean id="say" class="test.Say" p:hello-ref="hello"/>
<beans profile="prod">
<bean id="hello" class="test.Hello" p:subject="Production!"/>
</beans>
<beans profile="dev">
<bean id="hello" class="test.Hello" p:subject="Development!"/>
</beans>
我收到以下错误:
线程“主”org.springframework.beans.factory.BeanCreationException 中的异常:在类路径资源 [applicationContext.xml] 中定义名称为“say”的 bean 创建错误:在设置 bean 属性“hello”时无法解析对 bean“hello”的引用; 嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'hello' is defined at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328) at org.springframework.beans.factory .support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:
我期待hello bean 将根据活动的 Maven 配置文件(在我的情况下为prod或dev)定义。我开始认为 Spring 活动配置文件(spring.profiles.active)可能与 Maven 配置文件完全无关。
有人可以解释我哪里出错了吗?(这甚至可以使用配置文件吗?)。