Java – how to inject beans into ApplicationContext before loading from a file?

I have a filesystemxmlapplicationcontext. I want the bean defined in XML as a constructor parameter, a bean that is not declared in spring

For example, I want to do:

<bean class="some.MyClass">
    <constructor-arg ref="myBean" />
</bean>

So I can imagine doing this:

Object myBean = ...
context = new FileSystemXmlApplicationContext(xmlFile);
context.addBean("myBean",myBean); //add myBean before processing
context.refresh();

Except that there is no such method: - (does anyone know how I can achieve it?

Solution

First, how to programmatically create an empty parent context, use getbeanfactory to return the fact of a singletonbeanregistry implementation, and use the beanfactory of the context to register the object as a singleton

parentContext = new ClassPathXmlApplicationContext();
parentContext.refresh(); //THIS IS required
parentContext.getbeanfactory().registerSingleton("myBean",myBean)

This context is then specified as the parent of the "real" context, and then beans in the child context can reference beans in the parent process

String[] fs = new String[] { "/path/to/myfile.xml" } 
appContext = new FileSystemXmlApplicationContext(fs,parentContext);
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>