程序员、spring、编程、开发
吐槽
Java工作多年,天天简单的增删查改,spring的接口真没接触过
用的做多就是spring的注解,天天简单配置配置搞定
运行原理一概不知道
接口列表
ApplicationContextAwareApplicationContextBeanFactoryBeanFactoryAwareBeanNameAwareInitializingBeanSpring Aware是什么
Spring提供Aware接口能让Bean感知Spring容器的存在,即让Bean可以使用Spring容器所提供的资源。(通俗讲感知资源)
我公司大神经常也搞个Aware接口,开始看的很懵逼,后来想想spring的接口,哦明白了
案例理解
ApplicationContextAware
如要获取容器中的某个Bean,可以继承ApplicationContextAware,让这个Bean拥有调用容器服务的能力。
获取spring上下文ApplicationContext然后通过ApplicationContext的getBean *** 获取到指定Bean名称的实例ApplicationContextAware实战应用代码案例
1
ApplicationContext
上面ApplicationContextAware例子已经用到了ApplicationContext
看到ApplicationContext继承的接口就恐怖,这么多接口
1
1
InitializingBean
InitializingBean接口为bean提供了初始化 *** 的方式,它只包括afterPropertiesSet *** ,凡是继承该接口的类,在初始化bean的时候都会执行该 *** 。
业务代码场景
对bean的成员属性进行操作如,初始化值(最频繁),排序等等。
BeanFactoryAware
在公司代码里找了一圈,发现一个案例
检查bean安全的功能,需要获取BeanFactory
然后遍历bean去检查安全
private ListableBeanFactory beanFactory;
String[] strings = beanFactory.getBeanDefinitionNames();
Object object = beanFactory.getBean(beanName);
BeanFacotryAware总结
可以通过set来拿到我们要的对象,为什么还要用这个beanFactory呢
beanFactory可以更加动态的获取对象,传入beanName即可
Object object = beanFactory.getBean(beanName); 通过这种方式获取对象实例
spring接口总结
后缀Aware的接口都是可以拿来获取资源的(感知资源)业务Bean初始要做些动作可以利用InitializingBean通过ApplicationContextAware来获取Bean通过BeanFacotryAware来获取Bean通过普通set注入来获取Bean (获取Bean方式不一样,各有优点)最后spring还有其他强大接口,以后在总结下,面试能回答3个并结合实战代码讲已经不错了