非 Spring 的普通类调用 Spring 的类
如果是在同一个模块中,那可以通过 实现 ApplicationContextAware 接口处理。
详情见:
https://blog.csdn.net/sinat_32502451/article/details/155955824
非 Spring 的普通类调用 Spring 的类,并且不在同一模块
如果不在同一模块中,有可能要做一些额外处理。
比如 MeterRegistry这个类,位于 MyApplication 的SpringBoot 类里面,而 MicroMeterUtils 位于基础的 common 二方库里面。
现在想要在 MicroMeterUtils 中引入 MyApplication的 MeterRegistry, 可以如下处理。
- SpringBoot的启动类:
在SpringBoot的 Application 启动类,实现接口,implements ApplicationContextAware , 注入相关的服务。
@SpringBootApplication public class MyApplication implements ApplicationContextAware { public static void main(String[] args) { ConfigurableApplicationContext applicationContext = SpringApplication.run(DataApplication.class, args); } @Autowired private MeterRegistry meterRegistry; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { MicroMeterUtils.initMeterRegistry(meterRegistry); }- 普通类:
public class MicroMeterUtils { //这个注解,相当于 getter 方法。 @Getter private static MeterRegistry meterRegistry; public static void initMeterRegistry(MeterRegistry meterRegistry) { MicroMeterUtils.meterRegistry = meterRegistry; }通过这种方法,就可以将 SpringBoot中 的 meterRegistry 服务,引入到 MicroMeterUtils 工具类中。