के साथ प्राथमिक बीन वसंत ओवरराइडिंग मैं @ प्रिमिरी के उपयोग के साथ एक परीक्षण विन्यास में घोषित एक परीक्षण के दौरान एक वसंत बीन को ओवरराइड करने की कोशिश कर रहा हूं। एक घोषणा src/main/जावा पथ में है, दूसरा, प्राथमिक, src/test/जावा पथ में है।गैर प्राथमिक बीन
हालांकि, वसंत जानबूझकर प्राथमिक बीन को गैर-प्राथमिक बीन के साथ बदल रहा है, जिसे मैं परीक्षण के लिए उपयोग नहीं करना चाहता हूं। यदि मैं बस उत्पादन (src/main/java) कॉन्फ़िगरेशन बीन पर टिप्पणी करता हूं, तो यह वांछित परीक्षण कॉन्फ़िगरेशन में प्राथमिक परीक्षण (src/main/test) बीन का उपयोग करता है। (जाहिर है मैं बाहर कोड हर बार जब मैं एक परीक्षण चलाना चाहते हैं टिप्पणी नहीं कर सकता।)
लॉग से:
osbfsDefaultListableBeanFactory - एक अलग परिभाषा के साथ 'sqsConnectionFactory' सेम के लिए सेम परिभाषा ओवरराइड: की जगह [रूट बीन: कक्षा [शून्य]; स्कोप =; सार = झूठी; lazyInit = झूठी; autowireMode = 3; dependencyCheck = 0; autowireCandidate = true प्राथमिक = सत्य; फैक्ट्रीबीननाम = testJms कॉन्फ़िगरेशन; factoryMethodName = sqsConnectionFactory; initMethodName = बातिल; destroyMethodName = (inferred); वर्ग पथ संसाधन [com/foo/विन्यास/TestJmsConfiguration.class]] के साथ
[रूट सेम: वर्ग [अमान्य] में परिभाषित किया गया; स्कोप =; सार = झूठी; lazyInit = झूठी; autowireMode = 3; dependencyCheck = 0; autowireCandidate = true प्राथमिक = झूठा; factoryBeanName = jmsConfiguration; factoryMethodName = sqsConnectionFactory; initMethodName = बातिल; destroyMethodName = (inferred); वर्ग पथ संसाधन में परिभाषित [com/foo/विन्यास/JmsConfiguration.class]]
क्यों वसंत एक गैर प्राथमिक सेम के साथ एक प्राथमिक सेम की जगह है और कैसे मैं वसंत सेम विशेष रूप से के रूप में चिह्नित उपयोग करने के लिए करते हैं प्राथमिक बीन?
संपादित करें: src/मुख्य/जावा विन्यास:
@Configuration
public class JmsConfiguration {
... other bean declarations here ...
@Bean
public SQSConnectionFactory sqsConnectionFactory(Region region) throws JMSException {
return SQSConnectionFactory.builder()
.withRegion(region)
.build();
}
}
परीक्षण विन्यास:
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles(profiles = {"test"})
कृपया समस्या कॉन्फ़िगरेशन और परीक्षण श्रेणी जोड़ें जिसमें समस्या है। – reos
एक ही नाम के साथ एक बीन बनाने की दो अलग-अलग विधि, ताकि व्यवहार हो सके। अपने प्राथमिक बीन को एक नाम दें: @ बीन (नाम = "नामforbean") – alfcope
@ आल्कोप जवाब है, धन्यवाद! यदि आप इसे उत्तर के रूप में सबमिट करते हैं तो मैं इसे सही मान दूंगा। मुझे नहीं पता कि वसंत उस व्यवहार को क्यों अनुमति देगा जब वे जानते हैं कि वे एक बीन चिह्नित प्राथमिक को बदल रहे हैं, जिसे प्राथमिक चिह्नित नहीं किया गया है। – FiguringThisOut