IOC容器Bean的实例化方式以及其生命周期(上)

本文详细介绍了Spring框架中Bean的三种实例化方式:构造器实例化、静态工厂方法实例化和实例工厂方法实例化。同时,深入探讨了Bean的命名规则、作用域及生命周期管理,包括初始化和销毁方法的调用顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 三种实例化Bean的方式
a.使用类构造器实例化(默认无参数)

<bean id=“personService" class="com.baidu..PersonServiceImpl"/>

b.使用静态工厂方法实例化(简单工厂模式)

<bean id="personService" 
        class="com.baidu.factory.PersonServiceFactory"    factory-method="createPersonService" />
public class PersonServiceFactory {
      public  static PersonService createPersonService(){
                return new PersonServiceImpl();
      }
}

c.使用实例工厂方法实例化(工厂方法模式):

<bean id=“personServiceFactory" class="com.baidu.factory.PersonServiceFactory"/>
 <bean id="personService" factory-bean=“personServiceFactory" 
                                                                         factory-method="createPersonService" />
public class PersonServiceFactory {
       public  PersonService createPersonService(){
                     return new PersonServiceImpl();
       }
}

Bean的命名 id属性和name属性

  1. 一般情况下,装配一个Bean时,通过指定一个id属性作为Bean的名称
  2. id 属性在IoC容器中必须是唯一的
  3. id 的命名要满足XML对ID属性命名规范,必须以字母开始,可以使用字母、数字、连字符、下划线、句号、冒号
    注意:
    如果Bean的名称中含有特殊字符,就需要使用name属性。
    例如:<bean name="#person" class="com.baidu.pojo.Person"/>
    因为name属性可以相同,所以后出现Bean会覆盖之前出现的同名的Bean
    Bean的作用域
    在这里插入图片描述
    Spring容器中Bean的生命周期
<bean  id=“foo” class=“...Foo”
            init-method=“setup”
            destory-method=“teardown”/>

注意
当bean被载入到容器的时候调用setup
当bean从容器中删除的时候调用teardown(scope= singleton有效)

  1. instantiate bean对象实例化
  2. populate properties 封装属性
  3. 如果Bean实现BeanNameAware 执行 setBeanName
  4. 如果Bean实现BeanFactoryAware 或者 ApplicationContextAware 设置工厂 setBeanFactory 或者上下文对象 setApplicationContext
  5. 如果存在类实现 BeanPostProcessor(后处理Bean) ,执行postProcessBeforeInitialization
  6. 如果Bean实现InitializingBean 执行 afterPropertiesSet
  7. 调用 指定初始化方法 init
  8. 如果存在类实现 BeanPostProcessor(处理Bean) ,执行postProcessAfterInitialization
  9. 执行业务处理
  10. 如果Bean实现 DisposableBean 执行 destroy
  11. 调用 指定销毁方法 customerDestroy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值