自定义 Bean 的性质-5

spring Framework 提供了许多接口,您可以使用它们来自定义 bean 的性质。

生命周期回调

要与容器对 bean 生命周期的管理进行交互,可以实现 SpringInitializingBeanDisposableBean接口。容器要求 afterPropertiesSet()前者和destroy()后者让 bean 在初始化和销毁 bean 时执行某些操作。

在内部,Spring 框架使用BeanPostProcessor实现来处理它可以找到的任何回调接口并调用适当的方法。如果你需要自定义特性或其他生命周期行为 Spring 默认不提供,你可以BeanPostProcessor自己实现一个。

除了初始化和销毁回调之外,Spring 管理的对象还可以实现该Lifecycle接口,以便这些对象可以参与容器自身生命周期驱动的启动和关闭过程。

初始化回调

在容器为 bean 设置了所有必要的属性后,该org.springframework.beans.factory.InitializingBean接口允许 bean 执行初始化工作。该InitializingBean接口指定了一个方法:

void afterPropertiesSet() throws Exception;

我们建议您不要使用该InitializingBean接口,因为它不必要地将代码耦合到 Spring。或者,我们建议使用@PostConstruct注解或指定 POJO 初始化方法。

销毁回调

实现该org.springframework.beans.factory.DisposableBean接口可以让 bean 在包含它的容器被销毁时获得回调。该 DisposableBean接口指定了一个方法:

void destroy() throws Exception;

我们建议您不要使用DisposableBean回调接口,因为它不必要地将代码耦合到 Spring。或者,我们建议使用@PreDestroy注释或指定 bean 定义支持的通用方法

默认初始化和销毁方法

当您编写不使用 Spring 特定InitializingBeanDisposableBean回调接口的初始化和销毁方法回调时,您通常会编写名称为init()initialize()dispose()等的方法。理想情况下,此类生命周期回调方法的名称在整个项目中是标准化的,以便所有开发人员使用相同的方法名称并确保一致性。

<beans default-init-method="init">

    <bean id="blogService" class="com.something.DefaultBlogService">
        <property name="blogDao" ref="blogDao" />
    </bean>

</beans>
启动和关闭回调

Lifecycle接口定义了任何具有自己生命周期要求的对象的基本方法(例如启动和停止某些后台进程):

public interface Lifecycle {

    void start();

    void stop();

    boolean isRunning();
}

任何 Spring 管理的对象都可以实现该Lifecycle接口。然后,当 ApplicationContext自身接收到启动和停止信号时(例如,对于运行时的停止/重新启动场景),它会将这些调用级联到Lifecycle该上下文中定义的所有实现。它通过委托给 a 来做到这一点LifecycleProcessor,如以下清单所示:

public interface LifecycleProcessor extends Lifecycle {

    void onRefresh();

    void onClose();
}

请注意,LifecycleProcessor它本身就是Lifecycle 接口的扩展。它还添加了另外两种方法来对正在刷新和关闭的上下文做出反应。

ApplicationContextAwareBeanNameAware

当 一个创建一个实现ApplicationContextAware接口的对象实例时,会为该实例提供对该 的引用ApplicationContext`。

ApplicationContext创建一个实现 BeanNameAware接口的类时,该类被提供了对其关联对象定义中定义的名称的引用。

其他Aware接口

Spring 提供了广泛的Aware回调接口,让 bean 向容器指示它们需要特定的基础设施依赖项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吕布辕门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值