Вам не нужен второй экземпляр ClassPathXMLAplicationContext. Я думаю, что это поможет вам:
ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Module.xml");
Product myProduct = (Product) context.getBean("Batery");
//when you want to change the bean with another
myProduct = (Product) context.getBean("CD-RW");
В файле XML вам нужны два bean-компонента, где «Batery» может инициализироваться с тем, что вы хотите, но «CD-RW» не может быть инициализирован с помощью конструктора. Вот пример с инициализатором сеттера:
<bean id="Batery" class="com.seller.springtest1.Battery">
<property name="name" value="AAA" />
<property name="price" value="2.5" />
</bean>
<bean id="CD-RW" class="com.seller.springtest1.Disc">
<property name="name" value="CD-RW" />
<property name="price" value="1.5" />
</bean>
У меня нет запроса об удалении (это функция сборщика мусора), если у вас есть особые потребности (когда вы сохранили ссылку на myProduct), вы можете сделать myProduct = null