Bean 的生命周期回调方法主要有两种,一种是在初始化的时候调用的,另一种是在Bean生命周期结束时调用的。
主要有三种方式:
1. 通过@PostConstruct和@PreDestroy注解来实现
实例代码:
public class UserService {
@PostConstruct
public void init(){
System.out.println("init----");
}
@PreDestroy
public void destory(){
System.out.println("destory----");
}
}
@Configuration
public class MainConfig {
@Bean
public UserService userService(){
return new UserService();
}
}
测试:
public class Testt {
@Test
public void test01(){
AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext(MainConfig.class);
UserService userService = applicationContext.getBean(UserService.class);
System.out.println(userService);
applicationContext.close();
}
}
测试结果:
2. 通过接口实现
其余相同,增加如下代码
package com.wei.spring02;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
/**
* @ClassName:
* @Description TODO
* @Author 14405
* @Date 2021/10/27 11:09
* @Version V1.0
**/
public class UserService implements InitializingBean, DisposableBean {
@PostConstruct
public void init() {
System.out.println("init----");
}
@PreDestroy
public void destory() {
System.out.println("destory----");
}
public void afterPropertiesSet() throws Exception {
System.out.println("init2");
}
public void destroy() throws Exception {
System.out.println("destory2");
}
}
3.通过配置方式来实现
<bean id="userService" class="com.wei.spring02.UserService" init-method="init3" destroy-method="destory3"></bean>
或者:
@Bean(initMethod = "init3",destroyMethod = "destory3")
public UserService userService(){
return new UserService();
}
结果: