一、Aware 注入 Spring 底层组件

自定义组件想要使用Spring容器底层的一些组件(ApplicationContext,BeanFactory,xxx)

自定义组件实现 xxxAware:在创建对象的时候,会调用接口规定的方法,注入相关组件 Aware

Aware把Spring底层一些组件注入到自定义的 bean中

示例:

@Component
public class Red implements ApplicationContextAwareBeanNameAwareEmbeddedValueResolverAware {

    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

posted on 2021-11-14 21:25  格物致知_Tony  阅读(52)  评论(0)    收藏  举报