什么是SpringBean:
Bean代表被Ioc容器管理的对象,通过配置文件或者注解,告诉Ioc容器帮助我们管理哪些对象。
配置文件形式:
<bean id="id名称" class="路径">
<constructor-arg value="..."/> <!--通过构造函数注入-->
</bean>
Bean 的注解:@Autowired、@Resource 注解等;
注册Bean时,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是要把需要实例化的对象转化成一个Bean,放在Ioc容器中,等需要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法组装。
springBean生命周期:
SPringle的生命周期分为四个阶段:1️⃣实例化 2️⃣属性注入 3️⃣初始化 4️⃣销毁
实例化:根据配置文件中Bean的定义,利用Java Reflection反射技术创建Bean的实例;
注入对象依赖的属性值或对象;
处理各种Aware接口:Spring会检测Bean是否实现了xxxAware接口,通过Aware类型接口
,可以让SPringle框架为当前的Bean注入想相应的内容;
3.1 如果Bean实现BeanNameAware接口,会掉用它实现setBeanName方法,注入Bean的名字;
3.2 如果Bean实现BeanClassLoaderAware 接口,调用setBeanClassLoader() 方法,注入ClassLoader对象的实例;
3.3 如果Bean实现BeanFactoryAware接口,会调用它实现的setBeanFactory() 方法,注入的是S
pring厂;
3.4 如果Bean 实现Applicat ionContextAware接口,会调用setApplicat ionContext()方法,注
入Spring上下文;
执行BeanPostProcessor前置处理: 如果想对Bean进行一些自定义的前置处理,那么可以让Bean实现了BeanPostProcessor 接口,将会在该阶段调用postProcessBeforeInitialization方法;
执行InitializingBean初始化方法:如果Bean实现了InitializingBean 接口,执行afeterPropertiesSet()方法。
执行init-method自定义初始化方法: 如果Bean在Spring配置文件中配置了init- method属性,则会自动调用其配置的初始化方法。
执行BeanPostProcessor后置处理:如果这个 Bean实现了BeanPostProcessor接口,将会调用postProcessAfterInitialization(Object obj, String s)方法,由于这个方法是在Bean 初始化结束后调用;
⭐如完成以上步骤,则证明已正确创建Bean,已经可以正常使用Bean。
Bean的销毁方式:
执行DisposableBean销毁Bean:当Bean不再需要时,会经过清理阶段,如果Bean 实现了DisposableBean这个接口,会调用其实现的destroy()方法执行销毁;
执行destroy-method自定义销毁方法:如果这个Bean 的Spring配置中配置了destroy - method属性,会自动调用其配置的自定义销毁方法。