Aware 接口

Aware 接口,从字面上理解就是感知捕获。单纯的一个 Bean 是没有知觉的。

之所以 UserDao 能够注入到 UserService ,有一个前提,就是它两个都是被 Spring
容器管理的。如果直接 new 一个 UserService,这是没用的,因为 UserService 没有被 Spring 容器管理,所以也不会给它里边注入Bean。

在实际开发中,我们可能会遇到一些类,需要获取到容器的详细信息,那就可以通过 Aware 接口来实现。

Aware 是一个空接口,有很多实现类

这些实现的接口,有一些公共的特征:

  1. 都是以Aware结尾
  2. 都是继承Aware
  3. 接口内定义了一个set方法

每一个子接口均提供了一个 set 方法,方法的参数就是当前 Bean 需要感知的内容,因此我们需要在 Bean 中声明相关的成员变量来接受这个参数。接收到这个参数后,就可以通过这个参数获取到容器的详细信息了

@Component
public class SayHello implements ApplicationContextAware {
    private ApplicationContext applicationContext;
    public String sayHello(String name) {
        //判断容器中是否存在某个 Bean
        boolean userDao = applicationContext.containsBean("userDao333");
        System.out.println(userDao);
        return "hello " + name;
    }
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
}
posted @ 2020-08-03 19:06  柒丶月  阅读(446)  评论(0编辑  收藏  举报