Spring之Aware接口

spring 提供Aware接口机制,给外部的类提供获取spring内部信息的能力。

常见的Aware接口

接口描述
ApplicationContextAware获取容器本身ApplicationContext对象,可以在bean中得到bean所在的应用上下文
BeanClassLoaderAware获取加载当前bean的类加载器
BeanFactoryAware获取当前bean的BeanFactory实例,可以用来手动注册 bean
BeanNameAware在bean中得到它在Spring容器中的bean实例的名字
ResourceLoaderAware获取ResourceLoader实例,获取资源加载器读取资源文件

Aware 接口

Aware接口,只做标记。Aware 仅表示实现类具有在获取springbean创建过程中的一些内部属性的能力。

/**
 * 只做标记
 * spring容器感知接口
 */
public interface Aware {
 
}
 

提供具体能力的接口

ApplicationContextAware 提供获取 applicationContext 的能力

public interface ApplicationContextAware extends Aware {
 
    void setApplicationContext(ApplicationContext applicationContext) throws BeansException;
 
}

BeanClassLoaderAware提供获取 classLoader 的能力

public interface BeanClassLoaderAware extends Aware{
 
    void setBeanClassLoader(ClassLoader classLoader);
 
}

BeanFactoryAware 提供获取 BeanFactory 的能力

public interface BeanFactoryAware extends Aware{
 
    void setBeanFactory(BeanFactory beanFactory) throws BeansException;
 
}

BeanNameAware 提供获取 beanName 的能力

public interface BeanNameAware extends Aware{
 
    void setBeanName(String beanName);
 
}

Aware接口执行顺序

@Component
public class TestAware implements
        ApplicationContextAware,
        ApplicationEventPublisherAware,
        BeanClassLoaderAware,
        BeanFactoryAware,
        BeanNameAware,
        ResourceLoaderAware {

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        System.out.println("ApplicationContextAware 回调");
    }

    @Override
    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
        System.out.println("ApplicationEventPublisherAware 回调");
    }

    @Override
    public void setBeanClassLoader(ClassLoader classLoader) {
        System.out.println("BeanClassLoaderAware 回调");
    }

    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        System.out.println("BeanFactoryAware 回调");
    }

    @Override
    public void setBeanName(String name) {
        System.out.println("BeanNameAware 回调");
    }

    @Override
    public void setResourceLoader(ResourceLoader resourceLoader) {
        System.out.println("ResourceLoaderAware 回调");
    }
}

运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值