Spring Boot的普通类调用Bean对象
有时候需要在一些工具类中调用到Spring管理的bean对象的一些方法。
代码如下
/**
* 导入处理接口
* @author Thinkpad
*
*/
public class ResourceImportServiceImpl implements HxlsOptRowsInterface {
private static ApplicationContext applicationContext;//启动类set入,调用下面set方法
public static void setApplicationContext(ApplicationContext context) {
applicationContext = context;
}
//省略部分代码
}
在普通类中定义 ApplicationContext 静态变量和set方法。
Spring boot的启动类:
public class SampleWebFreeMarkerApplication extends SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SampleWebFreeMarkerApplication.class);
}
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext applicationContext = SpringApplication.run(SampleWebFreeMarkerApplication.class, args);
ResourceImportServiceImpl.setApplicationContext(applicationContext);
}
}
ConfigurableApplicationContext 是 ApplicationContext 接口的实现,这里直接传到普通类的 setApplicationContext 方法。
这样就可以获取自己想要的接口,不会报空指针异常了。
GogoResourceService gogoResourceService = applicationContext.getBean(GogoResourceService.class);
gogoResourceService.insertSelective(gogoResource);