【Spring源码解析】生命周期-@PostConstruct&@PreDestroy

前言

请注意,@PostConstruct和@PreDestroy注释都是Java EE的一部分。而且由于Java EE在Java
9中已被弃用,而在Java 11中已被删除,因此我们必须添加一个附加依赖项才能使用这些注释

实现

1
2
3
4
5
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Component
public class Dog {

public Dog() {
System.out.println("dog constructor...");
}

@PostConstruct
public void init() {
System.out.println("dog init...");
}

@PreDestroy
public void destroy() {
System.out.println("dog destroy...");
}
}
1
2
3
4
5
6
7
8
9
@ComponentScan("cn.idea360.bean")
@Configuration
public class BeanConfigOfLifeCycle {

@Bean(initMethod = "init", destroyMethod = "destroy")
public Car car() {
return new Car();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* cat constructor...
* cat init...
* dog constructor...
* dog init...
* car constructor...
* car init...
* 容器创建完成
* car destory...
* dog destroy...
* cat destroy...
*/
@Test
public void test07() {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(BeanConfigOfLifeCycle.class);
System.out.println("容器创建完成");

// 关闭容器
applicationContext.close();
}

最后

本篇到此结束,欢迎大家关注公众号【当我遇上你】。