实现Aware接口使用Spring底层组件

实现Aware接口使用Spring底层组件

Aware接口的实现类

基于@Component,通过Aware的实现类在容器创建之前将Spring底层的信息获取并使用。

例如:

  1. 获取应用上下文对象applicationContext的ApplicationContextAware
  2. 获取该类的bean对象信息的BeanNameAware
  3. 获取该类类加载器classloader的BeanClassLoaderAware

实现Aware接口使用Spring底层组件_第1张图片

/**
 * 通过Aware接口的实现类,获取到Spring底层相关组件
 */
@Getter
@Component
public class AwareComponent implements ApplicationContextAware, BeanNameAware {
	/**
	 * 通过实现类的构造方法,获取到相应的Spring容器参数
	 */
	private ApplicationContext applicationContext;

	private String thisBeanName;

	/**
	 * 可以获得注册的Ioc容器的Context对象
	 *
	 * @param applicationContext 从ApplicationContextAware获取到的当前bean的名字
	 * @throws BeansException 获取bean异常
	 */
	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
		this.applicationContext = applicationContext;
	}

	/**
	 * 可以获取到当前Bean(AwareComponent)的名字
	 *
	 * @param name 从BeanNameAware中获取到的当前bean的名字
	 */
	@Override
	public void setBeanName(String name) {
		this.thisBeanName = name;
	}
}

使用

在这里插入图片描述

AnnotationConfigApplicationContext configContext = new AnnotationConfigApplicationContext(BeanConfiguration.class);
// 测试Aware接口的实现类获取Spring的参数
AwareComponent awareComponent = configContext.getBean(AwareComponent.class);
System.out.println("This Context: " + configContext);
System.out.println("AwareComponent: " + awareComponent.getApplicationContext());

你可能感兴趣的:(Spring,spring,java,后端)