SpringBoot提供了一组以Aware结尾的接口,可以进行资源对象的注入。 其中,ApplicationContextAware接口实现在任意位置注入Spring上下文对象。定义实现类 这里定义任意的一个实现类,实现ApplicationContextAware接口。 在该接口中要求实现一个方法setApplicationContextComponent(zhangsan)publicclassUserimplementsApplicationContextAware{privateStringuserId;privateStringuserName;privateStringroleId;privateStringroleName;OverridepublicvoidsetApplicationContext(ApplicationContextapplicationContext)throwsBeansException{}}实现setApplicationContext方法 setApplicationContext方法使用来注入Spring上下文对象的,参数就是系统提供的ApplicationContext对象。 在User类中定义成员变量applicationContext,保存系统注入的对象。privateApplicationContextapplicationContext;OverridepublicvoidsetApplicationContext(ApplicationContextapplicationContext)throwsBeansException{this。applicationContextapplicationContext;}定义方法使用上下文对象 拿到ApplicationContext对象后,就可以使用该对象做需要的处理,这里只是用来进行功能演示,我们打印目前SpringBoot中加载的BeanName。 定义方法printBean,通过ApplicationContext对象打印BeanName。Component(zhangsan)publicclassUserimplementsApplicationContextAware{privateStringuserId;privateStringuserName;privateStringroleId;privateStringroleName;publicvoidprintBean(){String〔〕namesthis。applicationContext。getBeanDefinitionNames();for(Stringname:names){System。out。println(name);}}privateApplicationContextapplicationContext;OverridepublicvoidsetApplicationContext(ApplicationContextapplicationContext)throwsBeansException{this。applicationContextapplicationContext;}}测试 定义好方法后,调用方法就能打印出Spring容器中的BeanName,这里通过启动类进行调用。SpringBootApplicationpublicclassBeanApplication{publicstaticvoidmain(String〔〕args){ConfigurableApplicationContextcontextSpringApplication。run(BeanApplication。class,args);Userzhangsancontext。getBean(zhangsan,User。class);zhangsan。printBean();}} 运行项目,控制台打印出BeanName