SpringFrameWork之InitializingBean

目录

引言

作用

原理

接口定义

实现接口

Spring容器调用InitializingBean

同等效果的其他用法

注解方式

XML 配置方式


引言

在 Spring 框架中,InitializingBean 接口提供了一种灵活的方式,允许开发者在 bean 初始化阶段执行自定义逻辑。在本篇博文中,我们将深入了解 InitializingBean 接口的作用和实现原理。

作用

InitializingBean 接口的主要作用是在 bean 实例化之后、属性设置之后,执行一些自定义的初始化逻辑。这样,我们可以确保在 bean 使用之前,其依赖和状态都已经初始化完毕。

原理

让我们通过以下步骤来理解 InitializingBean 的原理

接口定义
public interface InitializingBean {

    void afterPropertiesSet() throws Exception;
}

InitializingBean 接口只包含一个方法 afterPropertiesSet

实现接口

如果一个类实现了 InitializingBean 接口,就必须提供对应的实现方法。

public class MyDataSource implements InitializingBean {
    private Connection connection;
    @Override
    public void afterPropertiesSet() throws Exception {
        // 初始化资源,例如建立数据库连接
        this.connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");
    }
}
Spring容器调用InitializingBean

当 Spring 容器实例化一个 bean 后,会检查它是否实现了 InitializingBean 接口。如果是,容器会在属性设置完毕后调用 afterPropertiesSet 方法。

public class InitializingBeanProcessor {
    public void invokeInitMethods(Object bean, String beanName) throws Throwable {
        if (bean instanceof InitializingBean) {
            ((InitializingBean) bean).afterPropertiesSet();
        }
    }
}

同等效果的其他用法

注解方式

InitializingBean 是 Spring 提供的一种初始化 bean 的方式,但通常更推荐使用 @PostConstruct 注解或配置 <init-method> 进行初始化,因为它们更具有可读性,且不依赖于 Spring 特定的接口。例如:

public class MyBean {

    @PostConstruct
    public void init() {
        // 初始化逻辑
    }
}
XML 配置方式
<bean id="myBean" class="com.example.MyBean" init-method="init"/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值