2010-03-01 8 views
6

मुझे पता है कि PropertyPlaceHolderConfigurer का निम्न कार्यान्वयन संभव है:वसंत: प्रोग्रामिंग रूप से गैर सिंगलटन बीन्स पर PropertyPlaceHolderConfigurer का उपयोग करें

public class SpringStart { 
    public static void main(String[] args) throws Exception { 
    PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer(); 
    Properties properties = new Properties(); 
    properties.setProperty("first.prop", "first value"); 
    properties.setProperty("second.prop", "second value"); 
    configurer.setProperties(properties); 

    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(); 
    context.addBeanFactoryPostProcessor(configurer); 

    context.setConfigLocation("spring-config.xml"); 
    context.refresh(); 

    TestClass testClass = (TestClass)context.getBean("testBean"); 
    System.out.println(testClass.getFirst()); 
    System.out.println(testClass.getSecond()); 
    }} 

कॉन्फ़िगरेशन फ़ाइल में इसके साथ:

<?xml version="1.0" encoding="UTF-8"?> 

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd ">

<bean id="testBean" class="com.spring.ioc.TestClass"> 
    <property name="first" value="${first.prop}"/> 
    <property name="second" value="${second.prop}"/> 
</bean> 

हालांकि, यह मुझे लगता है कि testBean में किए गए परिवर्तन सभी परीक्षण बीन्स पर दिखाए जाएंगे।

मैं प्रॉपर्टीप्लेसहोल्डर कॉंगफिगरर का इस तरह से उपयोग कैसे करूं कि मैं इसे बीन के अलग-अलग उदाहरणों पर लागू कर सकता हूं, और इन उदाहरणों में से प्रत्येक तक पहुंच प्राप्त कर सकता हूं?

मुझे उम्मीद है कि सवाल समझ में आता है। किसी भी मदद की बहुत सराहना की जाएगी।

उत्तर

2

डिफ़ॉल्ट रूप से वसंत सेम सिंगलेट हैं, जो बाद में context.getBean("testBean") पर कॉल करते हैं, वही उदाहरण लौटाएंगे। आप उन्हें अलग-अलग विविधताएं वापस करना चाहते हैं, तो आप सेम परिभाषा पर एक scope = "prototype" स्थापित करना चाहिए:

<bean id="testBean" class="com.spring.ioc.TestClass" scope = "prototype"> 
... 
+0

इससे पहले कि मैं जश्न मनाने मैं सिर्फ पुष्टि करते हैं कि मार context.refresh बटन अभ्यस्त इस सेम के पिछले उदाहरणों को अद्यतन करना चाहते हैं? – Babyangle86

+0

हां, यह नहीं होगा। – axtavt

+0

शानदार। धन्यवाद। – Babyangle86

संबंधित मुद्दे