ApplicationContextAware在Spring启动时获取ApplicationContext为null

时间:2017-09-25 12:23:01

标签: java spring spring-boot

我使用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来获取它?

0 个答案:

没有答案