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;
}
}
标签:applicationContext,毕设,容器,3.12,接口,Aware,Bean,UserService From: https://www.cnblogs.com/zhiqi2625/p/18077523