@Spring注解(十) Aware接口

426 阅读1分钟

Aware接口作用是能把Spring底层组件注入到ioc容器中

使用方法

自定义类实现xxxAware接口, 然后将这个类放入ioc容器中

@Component
public class AwareTest implements ApplicationContextAware, BeanNameAware, EmbeddedValueResolverAware {
	// 这个Aware作用是拿到ioc容器
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        System.out.println("当前的ioc容器" + applicationContext);
    }
	// 这个Aware作用是拿到当前bean name
    @Override
    public void setBeanName(String name) {
        System.out.println("当前bean的名字: " + name);
    }
	// 这个Aware作用是拿到字符串解析器
    @Override
    public void setEmbeddedValueResolver(StringValueResolver resolver) {

        System.out.println(resolver.resolveStringValue("${os.name}"));
    }
}

结果

当前bean的名字: awareTest
Mac OS X
当前的ioc容器org.springframework.context.annotation.AnnotationConfigApplicationContext@8e50104, started on Sun Sep 06 09:42:06 CST 2020

背后原理: 将这个实现了xxxAware接口的类放入到容器中, 会被xxxPostProcessor处理, 如果检测到了会调用里面的函数.