我使用spring boot 1.5.4构建了一个Web项目
创建一个类实现ApplicationContextAware
@Component
public class SpringContextUtils implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtils.context = context;
}
public static ApplicationContext getContext() {
return context;
}
然后我创建一个控制器来测试这个类
@Controller
public class TestController {
@RequestMapping(value = "test", method = RequestMethod.GET)
public @ResponseBody String test(){
System.out.println(SpringContextUtils.getContext());));
return "aaa";
}
}
比我启动应用程序
@SpringBootApplication
@ServletComponentScan
@EnableTransactionManagement
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
我访问了此控制器但SpringContextUtils.getContext()
输了null
,为什么?
我确信SpringContextUtils会被春天扫描。
我知道我可以使用@Autowired
来获取ApplicationContext,但我想知道为什么我的程序出错了,我怎么能用ApplicationContextAware来获取它?