获取Spring上下文的注意点

2016-12-12 / 5 阅读 / Java

一直以来关注点都在Spring提供的功能本身,而忽略了其中一些小细节。例如,Spring随Web服务器启动时,会加载一次上下文,这个时候所有bean只会被实例化一次。如果使用过程中一直是通过注入来使用bean的话,那其实不会出问题。
关键有时候不能注入的情况,自然想到手动获取bean。要获取bean自然要获取Spring上下文。

但上下文有几种方式获得方式,例如以下两种,但是它们每次获得的上下文实例其实都是不同的。也就是说配置中的beans会实例化多次。却与我们使用Spring初衷违背了。因此在手动获取上下文要注意以下代码获取方式不能重复执行。

ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring.xml");
ApplicationContext context = new FileSystemXmlApplicationContext("classpath:spring.xml");

那么在Web中上下文是随服务器启动的,上下文已经被实例化,如何获得了。
如下:

 WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
相关推荐