在项目中曾多次看到init-method和destroy方法的相关配置,今天特地具体的了解了一下,简单说说几种使用方法。
1、java形式的配置方式:
package com.fyf.service;
public class BeanCreateService {
public void init(){
System.out.println("init(),在BeanCreateService bean初始化完之后执行。");
}
public BeanCreateService(){
super();
System.out.println("BeanCreateService bean的初始化构造函数。");
}
public void destroy(){
System.out.println("destroy(),在BeanCreateService bean销毁后执行。");
}
}
2、-250的方式:
package com.fyf.service;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
public class JSR250BeanCreateService {
@PostConstruct
public void init(){
System.out.println("init(),在JSR250BeanCreateService bean初始化完之后执行。");
}
public JSR250BeanCreateService(){
super();
System.out.println("JSR250BeanCreateService bean的初始化构造函数。");
}
@PreDestroy
public void destroy(){
System.out.println("destroy(),在JSR250BeanCreateService bean销毁后执行。");
}
}
编写我们的配置bean:
package com.fyf.config;
import com.fyf.service.BeanCreateService;
import com.fyf.service.JSR250BeanCreateService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.fyf")
public class BeanConfig {
@Bean(initMethod = "init", destroyMethod = "destroy")
BeanCreateService beanCreateService(){
return new BeanCreateService();
}
@Bean
JSR250BeanCreateService jsr250BeanCreateService(){
return new JSR250BeanCreateService();
}
}
最后编写一个测试类:
package com.fyf.controller;
import com.fyf.config.BeanConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class TestController {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(BeanConfig.class);
//销毁bean
context.close();
}
}
我们来看下运行的结果:
BeanCreateService bean的初始化构造函数。
init(),在BeanCreateService bean初始化完之后执行。
JSR250BeanCreateService bean的初始化构造函数。
init(),在JSR250BeanCreateService bean初始化完之后执行。
destroy(),在JSR250BeanCreateService bean销毁后执行。
destroy(),在BeanCreateService bean销毁后执行。
还有一种就是放在配置文件里的,大概是这样子的:
<!-- 配置初始化方法和销毁方法 -->
<bean id="person" class="com.fyf.service.BeanCreateService" lazy-init="false" init-method="init"
destroy-method="destory"></bean>
效果都是一样的。