spring回顾系列:Bean的初始化与销毁
程序员文章站
2022-05-21 22:33:37
...
要想在使用bean之前或者使用之后做一些操作,spring提供了两种实现方式:
- 使用@Bean的initMethod和destroyMethod(相当于XML配置方式的init-method和destroy-method)
- 使用注解@PostConstruct和@PreDestroy
-
示例
public class DemoService {
public void init() {
System.out.println("初始化时调用----->DemoService");
}
public DemoService() {
super();
System.out.println("构造函数------->DemoService");
}
public void destroy() {
System.out.println("销毁时调用------>DemoService");
}
}
以上使用第一种方式来实现。
public class DemoPrototypeService {
@PostConstruct
public void init() {
System.out.println("初始化时调用----->DemoPrototypeService");
}
public DemoPrototypeService() {
super();
System.out.println("构造函数------->DemoPrototypeService");
}
@PreDestroy
public void destroy() {
System.out.println("销毁时调用------>DemoPrototypeService");
}
}
以上使用注解实现。
配置
@Configuration
@ComponentScan("com.ys.base.mocktest")
public class Config {
@Bean(initMethod="init",destroyMethod="destroy")//声明初始化方法和销毁方法
public DemoService getDemoService() {
return new DemoService();
}
@Bean
public DemoPrototypeService getDemoPrototypeService() {
return new DemoPrototypeService();
}
}
运行
public class Application {
public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(Config.class);
DemoService demoService1 = context.getBean(DemoService.class);
DemoPrototypeService demoPrototypeService1 =
context.getBean(DemoPrototypeService.class);
context.close();
}
}
结果
构造函数------->DemoService
初始化时调用----->DemoService
构造函数------->DemoPrototypeService
初始化时调用----->DemoPrototypeService
销毁时调用------>DemoPrototypeService
销毁时调用------>DemoService
通过以上示例能够清楚的明白两种方式的使用,但是这里推荐使用注解的形式。
推荐阅读
-
spring源码分析系列5:ApplicationContext的初始化与Bean生命周期
-
Spring5 - Bean的初始化和销毁的4种方式
-
Spring中bean的初始化和销毁几种实现方式详解
-
Spring中Bean的生命周期自定义销毁和初始化方法实现详解
-
spring注册组件——@Bean的生命周期(指定初始化和销毁方法)示例
-
spring源码分析系列5:ApplicationContext的初始化与Bean生命周期
-
【Spring】【Bean的scope属性】【Bean的初始化和销毁方法】
-
spring初始化bean和销毁bean时调用的方法
-
spring Bean的初始化和销毁生命周期方法
-
Spring指定Bean的初始化方法和销毁方法