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 sometimesApplicationContext 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