定制网站建设制作网店推广是什么
文末有本篇文章对应的项目源码文件可供下载
生命周期方法概念
我们可以在组件类中定义一个或者两个方法,然后当Spring IoC容器实例化和销毁组件类对象的时候进行自动调用.我们定义的方法就叫做组件的生命周期方法.
类似于Servlet的init/destroy方法,Tomcat可以在创建Servlet时自动执行Servlet的init方法,在销毁Servlet时自动执行Servlet的destroy方法,以此来完成Servlet的初始化和释放资源等业务逻辑。
0.配置思路
1.搭建好项目之后,编写Customer.java组件类,并在组件类中定义init方法和clear方法.
2.配置applicationContext.xml文件,配置组件类信息
3.编写SpringTest.java,进行测试.
1.配置pom.xml
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.14</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.3.1</version><scope>test</scope></dependency></dependencies>
2.编写Customer.java自定义组件类
public class Customer {/*** 组件初始化方法*/public void init() {System.out.println("Initializing Customer");}/*** 组件销毁方法*/public void clear() {System.out.println("Clearing Customer");}
}
初始化方法与销毁方法的命名是自定义的,但是在其他方面有一定的要求:
- 必须是public
- 必须是void
- 必须是无参数的
3.编写applicationContext.xml文件,配置组件类信息
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 配置自定义组件类-->
<!-- init-method: 定义组件初始化函数-->
<!-- destroy-method: 定义组件销毁函数--><bean id="customer" class="com.my.ssm.Customer" init-method="init" destroy-method="clear"/></beans>
4.编写SpringTest.java测试文件
public class SpringTest {@Testpublic void test1() {// 创建Spring IoC容器,创建完成就会自动进行组件类对象的实例化ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");// 该方法是为了Spring IoC容器正常结束context.close();}
}
我们可以发现,我们在程序中调用了context对象的close()方法,该方法是为了正常关闭Spring IoC容器.
在Spring IoC容器正常结束的情况下,Spring IoC容器才会去调用组件类对象的destroy-method所对应的销毁方法;
在Spring IoC容器异常关闭的情况下,因为Spring IoC异常关闭了,所以还没有来得及调用组件类对象的destroy-method所对应的销毁方法,因此销毁方法是不执行的,
感兴趣的朋友可以测试下,将该语句删除之后,看是否还会执行组件类对象所对应的销毁方法.
close方法不是ApplicationContext这个接口的方法,而是AbstractApplicationContext类的方法,对于ClassPathXmlApplicationContext这个Spring IoC容器的是实现类,它是继承AbstractApplicationContext类,所以我们可以通过ClassPathXmlApplicationContext类对象来去调用close方法,但是通过ApplicationContext类对象是无法调用close方法的.
5.测试结果
本篇文章的项目源码文件,可供下载学习