一、Aware 注入 Spring 底层组件
自定义组件想要使用Spring容器底层的一些组件(ApplicationContext,BeanFactory,xxx)
自定义组件实现 xxxAware:在创建对象的时候,会调用接口规定的方法,注入相关组件 Aware
Aware把Spring底层一些组件注入到自定义的 bean中
示例:
@Component
public class Red implements ApplicationContextAware, BeanNameAware, EmbeddedValueResolverAware {
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
System.out.println("传入的IOC容器" + applicationContext);
}
@Override
public void setBeanName(String name) {
System.out.println("当前bean的名字:" + name);
}
@Override
public void setEmbeddedValueResolver(StringValueResolver resolver) {
String resolveStringValue = resolver.resolveStringValue("你好${os.name} 我是 #{20*2}");
System.out.println("解析的字符串是" + resolveStringValue);
}
}
原理:
XXXAware 的功能:使用XXXProcessor来处理的。
如:ApplicationContextAware =》 ApplicationContextAwareProcessor