If your Spring beans need access to an object that is not created by Spring itself, you can “inject” it into the context by using a static parent context and registering the object with it. Beans can then reference it just as if it was defined in the application context file.
Java: Configure ApplicationContext with an Injected Bean
1
2
3
4
5
6
7
8
9
10
11
| import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import org.springframework.context.support.GenericApplicationContext; import org.springframework.context.support.StaticApplicationContext; Object externalyDefinedBean = ...; GenericApplicationContext parentContext = new StaticApplicationContext(); parentContext.getBeanFactory().registerSingleton( "injectedBean" , externalyDefinedBean); parentContext.refresh(); // seems to be required sometimes ApplicationContext context = new FileSystemXmlApplicationContext(springConfigs, parentContext); |
Xml: Make Use of It
1
2
3
4
| < bean id = "springBean" class = "your.SpringBeanType" > <!-- Note: The injectedBean is defined outside of Spring config --> < property name = "someProperty" ref = "injectedBean" /> </ bean >
Reference: https://theholyjava.wordpress.com/2011/10/11/spring-make-an-externally-created-object-available-to-beans-in-applicationcontext-xml/ |
No comments:
Post a Comment