场景 在初始化Bean的时候,需要创建一些资源;在销毁Bean的时候,需要释放一些资源。 方案一 在配置类中,使用@Bean来初始化一个Bean,并在注解参数中,指定初始化和销毁时所对应的方法即可。 TestBean @Slf4j public class TestBean { public void init() { log.info("初始化TestBean"); // DO STH. } public void destroy() { log.info("销毁TestBean"); // DO STH. } } CommonConfig @Slf4j @Configuration public class CommonConfig { @Bean(initMethod = "init", destroyMethod = "destroy") public TestBean testBean() { return new TestBean(); } } 方案二 使用@Component标记为组件,并且实现ApplicationRunner和DisposableBean两个接口。 两个接口分别对应有run()和destroy()的方法。 @Slf4j @Component public class TestBean implements ApplicationRunner, DisposableBean { @Override public void run(ApplicationArguments args) { log.info("初始化TestBean"); // DO STH. } @Override public void destroy() { log.info("销毁TestBean"); // DO STH. } }