第一种 bean类实现 InitializingBean, DisposableBean接口重写destroy()以及afterpropertiesSet()方法
public class Person implements InitializingBean, DisposableBean {
public Person() {
System.out.println("无参构造方法");
}
@Override
public void destroy() throws Exception {
System.out.println("销毁");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("init");
}
}
配置类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("xxxx")
public class AppConfig {
@Bean
public Person getPerson(){
return new Person();
}
}
测试类
package com.example.springbootmybatis.config;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
Person bean = applicationContext.getBean(Person.class);
System.out.println(bean.getClass().getName());
applicationContext.close();
}
}
结果:
第二种 在声明bean的时候指定方法
@Bean(initMethod = "init",destroyMethod = "destroy")
public Person getPerson(){
return new Person();
}
}
第三种 在创建bean的时候使用java注解
@PostConstruct
public void init() {
System.out.println("Person init-method");
}
// 充当destroy method
// 销毁方法的注解方式 等同于destroy-method
@PreDestroy
public void destroy() {
System.out.println("Person destroy-method");
}