今天遇到一个需求, 就是在停掉服务器的时候,希望停止一个web service的服务, 通过spring实现很简单, 只需要bean继承DisposableBean就可以了, 代码如下:
package com.citi.risk.portal.util;
import org.springframework.beans.factory.DisposableBean;
import com.citi.icg.cs.es2.core.ESClient;
public class ESATEntitlementDestroyer implements DisposableBean{
@Override
public void destroy() throws Exception {
System.out.println("==================ESATEntitlementDestroyer.destory() was called.==================");
try{
if(ESClient.isRunning())
ESClient.stop();
}catch(Exception se){
se.printStackTrace();
}
}
}
xml配置就一行就可以了!
<bean id="esatTEntitlementDestroyer" class="com.citi.risk.portal.util.ESATEntitlementDestroyer" />
还有一个需求就是初始化bean的时候需要执行一段代码, 这个只需要配置文件中添加init-method属性就可以了!
<bean id="esatEntitlement" class="com.citi.risk.portal.util.ESATEntitlement" init-method="init"/>
然后在类中实现init方法:
public void init(){
System.out.println("==================Start to initial ESATEntitlement to get IESService instance=============");
try {
if (!ESClient.isRunning())
ESClient.start();
esCitiriskRestrictedService = ESClient.getESService("citiriskrestricted");
esCitiriskService = ESClient.getESService("citirisk");
} catch (Exception e) {
System.out.println("---ESClient is not run or down--- ");
e.printStackTrace();
}
}
分享到:
相关推荐
1. 实现DisposableBean接口:该接口包含一个`destroy()`方法,当Bean准备销毁时,Spring会调用这个方法。与InitializingBean接口类似,使用这种方式可能会影响代码的可读性。 2. 使用`@PreDestroy`注解:这个注解...
- 销毁:当Spring容器关闭时,会调用Bean的销毁回调(如`DisposableBean`接口的`destroy()`方法或`@PreDestroy`注解的方法),执行清理工作。 2. Spring Bean 的配置方式 - XML配置:传统的Spring配置方式,通过`...
同样,实现`DisposableBean`接口的Bean会调用`destroy()`方法。 接下来,我们看看ApplicationContext的应用。ApplicationContext是Spring的核心接口,提供了比BeanFactory更高级的功能,如国际化支持和事件传播。 ...
Spring IOC容器可以管理Bean的生命周期,允许在Bean生命周期的特定点执行定制的任务。 Spring IOC容器对Bean的生命周期...在 Bean 的声明里设置 init-method 和 destroy-method 属性, 为 Bean 指定初始化和销毁方法。
类似于@PostConstruct,@PreDestroy是Java的JSR-250规范的一部分,用于标记一个方法,在Bean即将被销毁之前调用。 2. **DisposableBean接口** 如果Bean实现了DisposableBean接口,那么它必须重写`destroy()`方法...
最后,在Spring容器关闭时,会调用实现DisposableBean接口的destroy方法来销毁Bean。 Spring Bean生命周期的管理让开发者能够精确控制Bean的创建和销毁过程,从而满足不同场景下的需求。开发者可以通过实现这些扩展...
- `DisposableBean`接口:实现此接口的Bean,其`destroy()`方法会在销毁时被调用。 - `destroy-method`属性:与`init-method`类似,此处指定的方法会在Bean销毁前执行。 接下来,我们讨论Spring中Bean的几种作用...
- BeanPostProcessor接口的`postProcessBeforeInitialization()`方法在Bean初始化之前调用,可以用于预处理,例如AOP代理的实现。 - 同样,`postProcessAfterInitialization()`方法在初始化完成后调用,为Bean的...
同样,如果实现了`DisposableBean`接口,那么Bean需要提供一个`destroy()`方法,它会在Bean销毁之前被调用。这是Spring对那些没有定义初始化和销毁方法的Bean提供的一种回调机制。 3. **使用JSR250注解**: Java...
总结来说,要检测Unity3D中Gameobject的destroy事件并触发其他操作,你需要在脚本中实现`OnDestroy()`方法,并在此处编写你想要执行的代码。同时,为了进行碰撞检测,可以添加`Rigidbody`组件并利用碰撞回调函数。...
5. **销毁**:当Spring容器关闭时,或Bean的`destroy-method`属性指定的方法,或实现了`DisposableBean`接口的`destroy()`方法会被调用,进行清理工作。同样,`@PreDestroy`注解的方法也会在这个阶段执行。 在...
3. **初始化**:初始化阶段,Spring允许开发者定义初始化方法,如通过@Bean的initMethod属性指定,或者在Bean实现InitializingBean接口并重写afterPropertiesSet()方法。此外,还可以使用@PostConstruct注解标记的...
6. **销毁处理**:当Spring容器关闭时,它会调用每个可销毁Bean的`destroy()`方法,或者如果在Bean定义中指定了`destroy-method`,则调用该指定的方法。同样,`BeanPostProcessor`的`postProcessBeforeDestruction()...
4. **容器回调**:在Bean初始化之后,Spring容器可能会调用自己的回调方法,如`BeanPostProcessor`接口实现的`postProcessBeforeInitialization()`和`postProcessAfterInitialization()`方法,允许自定义逻辑进一步...
对于Singleton Bean,Spring在容器关闭时会调用`@PreDestroy`注解的方法和实现DisposableBean接口的`destroy()`方法。对于Prototype作用域的Bean,Spring不会自动管理销毁,需要由用户负责。 在实际应用中,理解...
- 对于单例Bean,Spring容器在关闭时会调用`destroy-method`属性指定的方法或带有`@PreDestroy`注解的方法进行清理工作。对于非单例Bean,通常不进行销毁操作。 7. **生命周期回调** - Spring提供了一些回调接口...
3. **Bean接口回调**:如果Bean实现了特定的接口,如`BeanNameAware`、`BeanFactoryAware`或`ApplicationContextAware`,Spring会在适当的时候调用对应的回调方法。这些接口允许Bean获取其ID、BeanFactory引用或...
而实现了`DisposableBean`的Bean会在容器关闭时调用`destroy()`方法,执行清理工作。然而,这两种接口的方法命名约定可能会导致代码过于依赖Spring,因此Spring 4.0引入了`@PostConstruct`和`@PreDestroy`注解作为...
2. **DisposableBean接口**:Bean如果实现了此接口,那么`destroy()`方法会在容器关闭时被调用。 另外,Spring容器有两种模式来管理Bean的生命周期:单例(Singleton)和原型(Prototype)。单例Bean在整个容器中...
4. DisposableBean:当Spring容器关闭时,会调用`destroy`方法,执行Bean的清理工作。 除此之外,还有两个容器级别的接口,主要用于Bean的实例化前后处理: 1. InstantiationAwareBeanPostProcessorAdapter:这是...