我有一个应用程序,其ClassPathXMLApplicationContext
已从spring xml文件中加载了一些bean。
我想在运行时添加一个bean。所以我创建了另一个ClassPathXMLApplicationContext
实例,它从新的xml文件中读取新的bean定义。现在我有两个appContexts。
我的问题是:如何将bean从新上下文复制到旧上下文?是否有必要复制?我只是合并这两个上下文?是否有合并的API?
后来我想取消部署bean的运行时。我还希望classloader在删除bean时卸载bean类。
如何从ApplicationContext中删除bean并卸载bean类。
谢谢, 问候, VIMAL
答案 0 :(得分:0)
您不需要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”不能用构造函数初始化。以下是setter initialize的示例:
<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
我没有得到关于删除的问题(这是垃圾收集器功能)