背景
在一个旧项目里,有一个类不归spring容器管理的,引用方式就是到处new,现在需要给这个类加一个可配置的属性。配置是在apollo上的,没办法根据文件名读取文件。
分析
如果能在运行时获得spring的上下文,或者直接拿到Environment对象,就能获得所需的配置。可是在不归spring容器管理的类,是没有办法直接获取到spring的上下文。只能采取间接手段,通过一个归spring管理的容器的static方法获得spring的上下文。
解决方案
- 获取spring上下文,通过spring上下文获得bean
这一步也可以通过Hutool工具类去获得,少些这个类,不过也挺麻烦的,还要修改扫包之类的,我嫌麻烦就自己写一个小工具类了。
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.