7.6Java EE——Bean的生命周期

Bean在不同作用域内的生命周期

        Bean的生命周期是指Bean实例被创建、初始化和销毁的过程。在Bean的两种作用域singleton和prototype中,Spring容器对Bean的生命周期的管理是不同的。在singleton作用域中,Spring容器可以管理Bean的生命周期,控制着Bean的创建、初始化和销毁。在prototype作用域中, Spring容器只负责创建Bean实例,不会管理其生命周期。

Bean生命周期的两个时间节点

        在Bean的生命周期中,有两个时间节点尤为重要,这两个时间节点分别是Bean实例初始化后和Bean实例销毁前,在这两个时间节点通常需要完成一些指定操作。因此,常常需要对这两个节点进行监控。

监控时间节点的方式

监控两个节点的方式有两种,一种是使用XML配置文件,一种是使用注解。 

        Spring容器提供了@PostConstruct用于监控Bean对象初始化节点, 提供了@PreDestroy用于监控Bean对象销毁节点。下面通过案例演示这两个注解的使用。 

1、创建Student类,在类中定义id和name字段,并使用@PostConstruct指定初始化方法,使用@PreDestroy指定Bean销毁前的方法。

@Component("student")
public class Student {
    @Value("1")
    private String id;
    @Value("张三")
    private String name; 	// 省略getter/setter方法,以及toString()方法
    @PostConstruct
    public void init(){System.out.println("Bean的初始化完成,调用init()方法");	}
    @PreDestroy
    public void destroy(){System.out.println("Bean销毁前调用destroy()方法");		}}

2、创建applicationStudent.xml,在该文件中引入Context约束并启动Bean的自动扫描功能。

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 使用context命名空间,在配置文件中开启相应的注解处理器 -->
    <context:component-scan base-package="com.mac" />
</beans>

 3、创建测试类StudentTest,在该类中编写测试代码,通过Spring容器加载配置文件并获取Student实例。

public class StudentTest {
    public static void main(String[] args){
    ApplicationContext applicationContext=new 
            ClassPathXmlApplicationContext("applicationStudent.xml");
    Student student=(Student)applicationContext.getBean("student");
    System.out.println(student);
    //销毁Spring容器中的所有Bean
    AbstractApplicationContext ac=(AbstractApplicationContext)
            applicationContext;
    ac.registerShutdownHook();
}}

 4、在IDEA中启动StudentTest类,控制台会输出结果。

         

猜你喜欢

转载自blog.csdn.net/W_Fe5/article/details/131805564
今日推荐