1: BeanFactory是底层方法,延迟加载 只有在getBean时bean才会创建
2: ApplicationContext封装了BeanFactory,程序启动时会加载配置文件,然后初始化所有的bean,getBean时只是从容器中获取
3: @Autowired
private Map<String, UserService> userServiceMap; 这种UserService所有的子类都会被映射到map中
4: InitializingBean: init方法实现的接口 构造函数为属性设置好值后调用
5: @PostConstruct注解的作用 .被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次
PostConstruct在构造函数之后执行,init()方法之前执行。
6: BeanNameAware Bean之中一定要有个String类型变量来保存BeanName的值,这个是在编写Bean代码时有程序员手工完成的
7: bean信息回封装成一个BeanDefinition对象,所有的BeanDefinition存储到一个beanDefinitionMap中去,spring对该map进行遍历,反射
创建bean的实例对象,存储到singletonObjects集合中
8: BeanFactory 中包含 beanDefinitionMap(包含路径全限定名) + singletonObjects(创建好的bean都在这里面)
9: spring后处理器: 是spring对外开发的重要扩展点,允许我们介入到bean的整个流程实例中来,已达到动态注册BeanDefinition,动态修改BeanDefinition
Bean的作用, 主要有两种后处理器:
-- BeanFactoryPostProcessor: Bean工厂后处理器,在beanDefinitionMap填充完毕,Bean实例化之前执行
案例: 实现类注入进容器
BeanDefinition beanDefinition = new RootBeanDefinition("org.example.springstudy02.impl.PersonImpl");
DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory)beanFactory;
defaultListableBeanFactory.registerBeanDefinition("person", beanDefinition);
-- BeanPostProcessor: Bean后处理器,一般在bean实例化之后,填充到单例池singleObjects之前执行
10: bean生命周期:
-- 实例化阶段: 通过反射进行实例化
-- 初始化阶段: 对bean的属性进行填充
-- 完成阶段: 被存储到单例池 singletonObjects中去
11: bean的初始化阶段:
Bean实例的属性填充
Aware接口属性注入
BeanPostProcessor的before()方法回调
initializingBean接口的初始化方法回调
自定义初始化方法init回调
BeanPostProcessor的after()方法回调
12: CommamdLineRunner 程序启动时用于初始化一些值
13: @PostConstruct注解的作用: 就是类的init方法
@PreDestory: 就是类的销毁方法
Spring学习笔记01
于 2024-05-22 23:26:09 首次发布