我一直在使用Spring 3.1's bean definition profiles和嵌套的bean進行試驗。我希望能夠根據活動配置文件定義不同的bean。考慮了簡化例如重下,使得我的Spring上下文包含有類似Spring 3.1使用bean定義配置文件的bean可見性
<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>
我收到以下錯誤:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'say' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'hello' while setting bean property 'hello'; nested exception is 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) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360) aJava Result: 1
我期待的是,你好豆將被定義根據主動Maven配置文件(在我的情況下,prod或dev)。我開始認爲Spring活動配置文件(spring.profiles.active)可能與Maven配置文件完全無關。
難道有人請解釋我要去哪裏嗎? (甚至可以使用配置文件?)。
感謝maba,有沒有一種很好的方式來使用web應用程序之外的spring.profiles.active?例如對於單元測試 –
如果使用彈簧測試,可以使用\ @ActiveProfiles註釋以及其他標準彈簧測試註釋(\ @ContextConfiguration等)。我通常使用它來針對不同的環境進行數據庫測試。在「測試」maven目標期間,我針對derby運行了一個針對derby的攻擊,併爲運行「集成測試」maven目標的oracle提供了另一套攻擊。我創建了抽象類來定義測試和\ @ContextConfiguration,並對其進行擴展,並使用@ActiveProfiles將其轉化爲單元或集成測試。 – Matt
謝謝,我被這個案子困住了,你救了我:D –