Spring提供了一些标志接口,用来改变BeanFactory中的Bean的行为,它们包括InitializingBean和DisposableBean。实现这些接口将会导致BeanFactory调用前一个接口的afterPropertiesSet()方法,调用后一个接口的destory()方法,从而使得bean可以在初始化和析构后做一些特定的动作。
在内部,Spring使用BeanPostProcessor来处理它能找到的标志接口以及调用适当的方法,如果你需要自定义的特性或者其他的spring没有提供的生命周期的行为,你可以实现自己的BeanPostProcessor
所有的生命周期的标志接口都在下面叙述了。在附录的一节中,你可以找到相应的图展示spring是如何管理bean的,那些生命周期的特征如何改变你的bean的本质特征以及他们如何被管理
1.initializingBean/init-method
实现org.springframework.beans.factory.InitializingBean接口允许一个bean在它的所有必须属性被BeanFactory设置后,来执行初始化的工作,InitialzingBean仅仅指定了一个方法。
注意通常InitializingBean接口的使用是能够被避免的,(不鼓励使用,因为没有必要把代码通Spring耦合起来) Bean的定义支持指定一个普通的初始化方法,在使用XmlBeanFactory的情况下,可以通过指定init-method属性来完成
<baan id="exampleInitBean" class="example.ExampleBean" init-method="init"/>
public class ExampleBean {
public void init(){
//do some initialization work;
}
}
同下面的是一样的
<bean id="exampleInitBean" class="example.AnotherExampleBean" />
public class AnotherExampleBean implements InitializingBean{
public void afterPropertiesSet(){
//do some initialization work
}
}
但却不把代码耦合于spring中。
2.DisposableBean/destroy-method
实现org.springframework.beans.factory.DisposableBean接口允许一个bean.可以再包含它的BeanFactory销毁的时候得到一个回调。DisposableBean也指定了一个方法。
注意:通常DisposableBean接口的使用能够避免的(不鼓励去使用,因为它不必要将代码耦合于spring中) bean的定义支持指定一个普通的析构方法。在使用xmlBeanFactory使用的情况下,它是通过destroy-method属性完成。
重要的提示:当以prototype模式部署一个bean的时候,bean的生命周期将会有少许的变化,通过定义,spring无法管理一个non-singleton/property bean的生命周期,因为当它创建之后,你可以把spring的角色想象成new操作符的替代品。从那之后任何生命周期方面的事情都有客户端来处理。
分享到:
相关推荐
Spring Bean 的生命周期 ...> InitializingBean 和 DisposableBean 回调接口 > 针对特殊行为的其他 Aware 接口 > Bean 配置文件中的 Custom init()方法和 destroy()方法 > @PostConstruct 和@PreDestroy 注解方式
我们需要继承 Spring 接口 InitializingBean/DisposableBean,其中 InitializingBean 用于初始化动作,而 DisposableBean 用于销毁之前清理动作。 ```java @Service public class HelloService implements ...
ingBean 和 DisposableBean 接口 当不使用注解而是通过实现接口的方式来控制 Bean 的生命周期时,可以实现 InitializingBean 和 DisposableBean 接口。这两个接口由 Spring 提供,它们包含两个方法: - ...
本文将详细讨论在Spring中使用`@PostConstruct`和`@PreDestroy`注解以及`InitializingBean`和`DisposableBean`接口来控制Bean的生命周期。 1. **使用@PostConstruct和@PreDestroy注解** `@PostConstruct`注解标记...
在上面的代码中,我们让 Cat 类实现了 InitializingBean 和 DisposableBean 接口,分别在 afterPropertiesSet 方法中实现了初始化逻辑,在 destroy 方法中实现了销毁逻辑。 3. 使用 JSR250 的 @PostConstruct 和 @...
总结来说,Spring的IoC方法注入提供了一种灵活的方式来管理和初始化对象,通过`@PostConstruct`和`@PreDestroy`注解,或者实现`InitializingBean`和`DisposableBean`接口,我们可以在对象生命周期的关键点执行特定的...
2. 实现 InitializingBean 和 DisposableBean 接口来指定初始化和销毁方法 3. 使用自定义的初始化和销毁方法 其中,@PostConstruct 和 @PreDestroy 注解是 Spring 2.5 中引入的注解,用于指定 Bean 的初始化和销毁...
该工厂 bean 实现了 FactoryBean、InitializingBean 和 DisposableBean 接口,用于管理 Client 对象的生命周期。 三、Client 对象的生命周期管理 Client 对象是 REST 客户端的基本接口,用于和 REST 服务器通信。...
2. **通过让Bean实现InitializingBean、DisposableBean接口**: 如果一个Bean实现了Spring的`InitializingBean`接口,那么它需要提供一个名为`afterPropertiesSet()`的方法,这个方法会在Bean的所有依赖注入完成后...
Spring框架通过回调方法(InitializingBean和DisposableBean接口,以及其他Aware接口)以及在配置文件中声明的init()和destroy()方法来管理bean的生命周期。此外,还可以使用@PostConstruct和@PreDestroy注解来指定...
编程式通过实现接口如InitializingBean和DisposableBean,然后重写其特定方法(afterPropertiesSet()和destroy())来控制Bean的初始化和销毁。声明式则是在XML配置文件中使用`init-method`和`destroy-method`属性来...
此外,生命周期接口,如InitializingBean和DisposableBean,以及自定义的工厂方法,都是控制Bean生命周期的重要手段。 时序图是理解系统间交互的利器。在Spring框架中,时序图可能涵盖了各种场景,如请求的处理流程...
`MyBean`实现了`InitializingBean`和`DisposableBean`接口,以及自定义的初始化和销毁方法,以便在生命周期的不同阶段执行特定操作。 总之,理解和掌握Spring Bean的生命周期对于开发高质量、易于维护的应用至关...
此外,Spring还提供了接口如InitializingBean和DisposableBean,实现这些接口的Bean可以覆盖其中的方法来自定义初始化和销毁逻辑。 总结来说,"Spring第一天学习笔记"涵盖了Spring框架的核心——IOC容器的使用,...
Bean可以通过实现InitializingBean和DisposableBean接口,或者在配置文件中定义init-method和destroy-method来声明初始化和销毁回调方法。另外,Spring 3.0引入的注解@PostConstruct和@PreDestroy也可以标记初始化和...
3. **Bean的生命周期**: Spring提供了对Bean生命周期的管理,包括初始化方法、销毁方法、作用域(如单例、原型等)、以及各种回调接口,如InitializingBean和DisposableBean。 4. **AOP(Aspect Oriented ...
例如,在我们的代码示例中,我们定义了一个Employee类,它实现了InitializingBean、DisposableBean和BeanNameAware三个接口。在Employee类的构造方法中,我们输出了"第一步:调用Bean的默认构造方法",以便标识这个...