在最近的项目中,有个地方我们不得不实用getBean的方法,自己从Spring context中获取bean进行数据库操作。
方法一(效率低,极易出现bug,不推荐使用):
刚刚开始的时候,我们使用这中方式,但是在应用过程中发现此方式效率低下,而且极易出现bug。 在我们系统中会生成ehcache_auto_created_时间戳文件夹,

 

所以我google了一下,改用其他方法。
方法二(效率高,灵活性高,可复用,推荐使用): 创建一个工具类SpringContextsUtil ,通过实现Spring中的ApplicationContextAware接口,在applicationContext.xml中注入bean后Spring会自动调用setApplicationContext方法。此时我们就可以获取到Spring context。

调用方法:

注:
1、使用时会出现无法获取applicationContext,并抛出NullPointerException。

原因:使用此方法必须在spring applicationContext.xml中注入bean。否则spring无法自动调用setApplicationContext。如下

2、如果注入后仍然出现这个问题。 则修改中的default-lazy-init=”false”。 或者是修改bean注入属性