开发者

Spring application context

Is there any other way in J6SE to get spring (spring 3.0) application context than implement ApplicationContextAware interface?

Sorry I must improve my question. I h开发者_开发知识库ave running application context in my J6SE app and in some classes I need it.


After reading your question, I know you're looking for an alternative to ApplicationContextAware but I read it that you have a goal of many classes using the ApplicationContext but want to avoid implementing the interface for all these classes. This approach still uses the ApplicationContextAware but encapsulates it into a single class for reuses.

I typically load the configuration at application start up via a ContextLoaderListener in the web.xml. After this occurs, I set "MyApplicationContext" as the contextApplicationContextProvider.

<bean id="contextApplicationContextProvider" class="pkg.MyApplicationContext"></bean> 

The class must implement ApplicationContextAware as you already suggested:

public class MyApplicationContext implements ApplicationContextAware {

    private static ApplicationContext appContext;

    /* (non-Javadoc)
     * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
     */
    @Override
    public void setApplicationContext(ApplicationContext globalAppContext)
        throws BeansException {

        this.appContext = globalAppContext;

    }

    public static ApplicationContext getApplicationContext() {
        return appContext;
    }

}

The key here is that you now have a static reference to the single instance of the ApplicationContext object. Retrieving it is simple by using the static method call MyApplicationContext.getApplicationContext() for any class, spring-managed or not.


You can load it from the CLASSPATH.


new FileSystemXmlApplicationContext(APPLICATION_CONTEXT_FILE);


@Inject
private ApplicationContext ctx;

(or @Autowired instead of @Inject). This is the annotation replacement of ApplicationContextAware. This of course mean that the objects needs to be a spring bean.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜