Tôi đã thử nghiệm bằng cách sử dụng Spring 3.1's bean definition profiles và các hạt lồng nhau. Tôi đã hy vọng rằng tôi có thể xác định đậu khác nhau tùy thuộc vào hồ sơ hoạt động. Hãy xem xét những điều sau nặng nề hơn ví dụ đơn giản như vậy mà bối cảnh mùa xuân của tôi chứa một cái gì đó giống nhưChế độ hiển thị hạt mùa xuân 3.1 sử dụng cấu hình định nghĩa 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>
tôi nhận được lỗi sau:
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
Tôi đã mong rằng chào đậu sẽ được xác định theo hồ sơ Maven hoạt động (trong trường hợp của tôi là prod hoặc dev). Tôi bắt đầu nghĩ rằng các cấu hình hoạt động trong mùa xuân (spring.profiles.active) có thể hoàn toàn không liên quan đến hồ sơ Maven.
Ai đó có thể giải thích tôi đang đi sai ở đâu? (Điều này thậm chí có thể sử dụng hồ sơ?).
Cảm ơn maba, có cách nào tốt đẹp để sử dụng spring.profiles.active bên ngoài ứng dụng web không? ví dụ. cho các bài kiểm tra đơn vị –
Nếu bạn đang sử dụng thử nghiệm mùa xuân, bạn có thể sử dụng chú thích \ @ActiveProfiles cùng với các chú thích kiểm tra mùa xuân chuẩn khác (\ @ContextConfiguration, v.v ...). Tôi thường sử dụng điều này để thực hiện các kiểm tra cơ sở dữ liệu đối với các môi trường khác nhau. Tôi chạy một cái chống lại derby trong mục tiêu maven "test", và có một bộ khác cho oracle chạy cho mục tiêu maven "integration-test". Tôi tạo ra các lớp trừu tượng để xác định các bài kiểm tra và \ @ContextConfiguration, và mở rộng chúng, và sử dụng @ActiveProfiles để biến thành một bài kiểm tra đơn vị hoặc tích hợp. – Matt
Cảm ơn, tôi đã bị mắc kẹt với trường hợp này và bạn đã lưu tôi: D –