spring注册组件——@Bean的生命周期(指定初始化和销毁方法)示例
程序员文章站
2022-06-03 08:50:31
...
一、bean的生命周期:
- bean创建的过程
- bean初始化的过程
- bean销毁的过程
二、构造(对象创建)
- 单实例:在容器启动的时候创建对象
- 多实例:在每次获取的时候创建对象
三、bean的初始化
- 对象创建完成,并赋值好,调用初始化方法
四、bean的销毁
- 单实例:容器关闭的时候
- 多实例:容器不会管理这个bean;容器不会调用销毁方法
五、指定bean的初始化和销毁方法
- 通过@Bean指定init-method和destroy-method
六、单实例指定初始化和销毁方法示例
1、创建一个maven项目(创建maven项目过程省略),pom.xml文件引入如下依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
2、创建一个Milk的实体类,代码如下:
package com.rf.bean;
/**
* 创建一个牛奶的实体类
* */
public class Milk {
public Milk(){
System.out.println("执行了Milk类的无参数构造方法");
}
public void init(){
System.out.println("执行了初始化方法。。。。。");
}
public void destry(){
System.out.println("执行了销毁方法。。。。。");
}
}
3、编写配置类,代码如下:
package com.rf.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import com.rf.bean.Milk;
@Configuration
public class Myconfig {
@Scope("singleton")//不写@Scope("singleton")默认单实例
//通过@Bean指定init-method和destroy-method
@Bean(initMethod="init",destroyMethod="destry")
public Milk milk(){
return new Milk();
}
}
4、编写测试类,代码如下:
package com.rf.test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.rf.config.Myconfig;
public class Test1 {
@org.junit.Test
public void test04(){
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Myconfig.class);
System.out.println("ioc容器创建完成了。。。。");
//关闭容器执行销毁方法
ctx.close();
}
}
5、启动测试类,运行效果如下:
七、多实例指定初始化和销毁方法示例
1、创建一个maven项目(创建maven项目过程省略),pom.xml文件引入如下依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
2、创建一个Milk的实体类,代码如下:
package com.rf.bean;
/**
* 创建一个牛奶的实体类
* */
public class Milk {
public Milk(){
System.out.println("执行了Milk类的无参数构造方法");
}
public void init(){
System.out.println("执行了初始化方法。。。。。");
}
public void destry(){
System.out.println("执行了销毁方法。。。。。");
}
}
3、编写配置类,代码如下:
package com.rf.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import com.rf.bean.Milk;
@Configuration
public class Myconfig {
@Scope("prototype")//指定多实例
//通过@Bean指定init-method和destroy-method
@Bean(initMethod="init",destroyMethod="destry")
public Milk milk(){
return new Milk();
}
}
4、编写测试类,代码如下:
package com.rf.test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.rf.config.Myconfig;
public class Test1 {
@org.junit.Test
public void test04(){
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Myconfig.class);
System.out.println("ioc容器创建完成了。。。。");
System.out.println("----------------------");
Object bean = ctx.getBean("milk");//调用时创建对象
System.out.println("----------------------");
Object bean1 = ctx.getBean("milk");//调用时创建对象
//关闭容器执行销毁方法
ctx.close();
}
}
5、启动测试类,运行效果如下:
推荐阅读
-
bean的作用域、初始化和销毁方法及生命周期
-
Spring中Bean的生命周期自定义销毁和初始化方法实现详解
-
Spring注解开发——12、生命周期[email protected]指定初始化和销毁方法
-
spring注册组件——@Bean的生命周期(指定初始化和销毁方法)示例
-
【Spring】【Bean的scope属性】【Bean的初始化和销毁方法】
-
spring初始化bean和销毁bean时调用的方法
-
spring Bean的初始化和销毁生命周期方法
-
Spring指定Bean的初始化方法和销毁方法
-
Spring Bean的初始化和销毁方法一:通过设置bean的initMethod和destroyMethod属性指定初始化和销毁方法。
-
Spring中Bean初始化和销毁方法执行的优先级