利用spring底层组件进行开发(三层组件)
能够供我们使用的组件,都是Aware的子接口(也就是我们实现这些子接口),即XxxxAware
- 以ApplicationContextAware为例:
- 实现步骤
- 实现ApplicationContextAware
- 重写其中的方法,都包含了一个对象.只需要将该对象赋值到属性中即可
- 实现步骤
有什么用?
- 例如ApplicationContextAware,可以通过该接口获取到Ioc容器对象applicationContext
- 实现ApplicationContextAware子接口的这个类会自动加载,重写的方法参数就是我们之前用的容器对象
@Component("myComponent99999") //id name
public class MyComponent implements ApplicationContextAware , BeanNameAware {
private ApplicationContext applicationContext;
private String beanName ;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws
BeansException {
//这里打印的spring容器对象和我们使用时的容器对象是同一个
System.out.println("000000000000000000000000000000"+applicationContext);
this.applicationContext= applicationContext ;
}
@Override
public void setBeanName(String name) {
System.out.println("获取当前bean的name"+name);
this.beanName = name ;
}
}
执行时间?
- 如果在main()中new Ioc容器:
- 先执行ApplicationContextAware实现类中的方法,通过该方法传入IoC容器对象供我们自己使用,然后再将__该__容器通过new返回给用户
再例如:BeanNameAware子接口,上边也实现了这个接口,能获取当前bean的名字