If I have a standalone main application. Say 20 classes. They all may need to interface with the beans defined by the spring configuration (ApplicationContext) at any time. I would bootstrap the classpath application context at the main application entry point. But how do you reuse the already instantiated beans?
For example, it seems like a bad approach to setup the ClasspathApplicationContext as a singleton, but that would be the idea.
I thought I had seen a GlobalContextLocator or something along those lines but didn't seen an example on how to use it.
There are a number of ways to do it. Your best reference is here:
http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#context-introduction
and the specific classes you need to look at are SingletonBeanFactoryLocator and ContextSingletonBeanFactoryLocator.
If you use the SingletonBeanFactoryLocator you can use the following to look up beans:
BeanFactoryLocator bfl = SingletonBeanFactoryLocator.getInstance();
BeanFactoryReference bf = bfl.useBeanFactory("com.mycompany.myapp");
MyClass zed = bf.getFactory().getBean("mybean");
There is a very good explanation of this in detail in the Javadocs:
http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/beans/factory/access/SingletonBeanFactoryLocator.html
Also, just to be clear, make sure that the config file is in your classpath for your application, otherwise the lookup will fail.