一、什么是Aware接口
Aware接口是一种框架辅助属性注入的一种思想,其他框架中也可以看到类似的接口。框架具备高度封装性,我们接触到的一般都是业务代码,一个底层功能API不能轻易的获取到, 但是这不意味着永远用不到这些对象,如果用到了就可以使用框架提供的类似Aware的接口,让框架给我们注入该对象。
二、Spring常用的Aware接口
Aware接口 | 回调方法 | 作用 |
---|---|---|
ServletContextAware | setServletContext(ServletContext context) | Spring框架回调方法注入ServletContext对象, web环境下才生效 |
BeanFactoryAware | setBeanFactory(BeanFactory factory) | Spring框架回调方法注入beanFactory对象 |
BeanNameAware | setBeanName(String beanName) | Spring框架回调方法注入当前Bean在容器中的beanName |
ApplicationContextAware | setApplicationContext(ApplicationContext applicat tionContext) | Spring框架回调方法注入applicationContext对象 |
三、代码场景
在自定义的普通Bean对象中,实现Aware接口,重写接口方法
/**
* 实现的几个Aware接口
*/
public class UserServiceImpl implements ApplicationContextAware, BeanNameAware, BeanFactoryAware {
/**
* BeanNameAware接口方法
* @param name
*/
public void setBeanName(String name) {
System.out.println("beanName: " + name);
}
/**
* BeanFactoryAware接口方法
* @param beanFactory
* @throws BeansException
*/
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
System.out.println("beanFactory: " + beanFactory);
}
/**
* ApplicationContextAware接口方法
* @param applicationContext
* @throws BeansException
*/
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
System.out.println("applicationContext: " + applicationContext);
}
}
控制台打印: