什么是 Bean
对于一般的 Java 对象,当 new 的时候创建对象,而后该对象就可能应用了。一旦该对象不再被应用,则由 Java 主动进行垃圾回收。
而 Spring 中的对象是 bean,bean 和一般的 Java 对象没啥大的区别,只不过 Spring 不再本人去 new 对象了,而是由 IoC 容器去帮忙咱们实例化对象并且治理它,咱们须要哪个对象,去问 IoC 容器要即可。IoC 其实就是解决对象之间的耦合问题,Spring Bean 的生命周期齐全由容器管制。
简而言之,bean 是由 Spring IoC 容器实例化、组装和治理的对象。
什么是 Spring Bean 的生命周期
• 一般的 Java 对象生命周期:
实例化
该对象不再被应用时通过垃圾回收机制进行回收
• Spring Bean 的生命周期:
实例化 Instantiation
属性赋值 Populate
初始化 Initialization
销毁 Destruction
Spring Bean 的生命周期的扩大点
• Bean 本身的办法
实例化 -> 属性赋值 -> 初始化 -> 销毁
• 容器级的办法(BeanPostProcessor 一系列接口)
次要是后处理器办法,比方 InstantiationAwareBeanPostProcessor、BeanPostProcessor 接口办法。
这些接口的实现类是独立于 Bean 的,并且会注册到 Spring 容器中。
在 Spring 容器创立任何 Bean 的时候,这些后处理器都会产生作用。
• Bean 级生命周期办法
能够了解为 Bean 类间接实现接口的办法,比方 BeanNameAware、BeanFactoryAware、ApplicationContextAware、InitializingBean、DisposableBean 等办法,这些办法只对以后 Bean 失效。
如上为 Spring Bean 常识的回顾,如果遗记了,没关系,让咱们在代码中寻找记忆。
代码性能介绍
Application.java 启动类,实例化 spring 容器
AnnotationConfig.java 配置类,指定扫描门路
AnnotationApplicationContext.java 外围类,bean 创立、获取
BeanDefinition.java BeanDefinition 定义
SqBeanPostProcessor.java 后置处理器,初始化前后对 bean 进行干涉
User.java 业务类,用户对象,用户信息设置
UserService.java 业务类,用户 service,实现 BeanNameAware、InitializingBean
spring 注解模仿
Autowired.java
Component.java
Lazy.java
Scope.java
ComponentScan.java
spring 接口模仿
BeanNameAware.java
BeanPostProcessor.java
InitializingBean.java