关于:“Spring管理对象的作用域与生命周期”这种事

生命周期:某个对象从创建到最终销毁的整个历程!在整个生命周期历程中,会设计一些生命周期的“阶段”,约定这个“阶段”应该做哪些事情。

Servlet的生命周期介绍:以此就将Servlet的生命周期划分为init()service()destroy()这3大“阶段”,具体的表现为3个方法!与Servlet相似的这类的组件的特点是:开发人员只需要在编写代码时创建出对应的类,并重写其中指定的方法即可,并不需要自行创建类的对象,更不需要调用方法,最终,程序在运行起来后,方法会被自动的调用,例如Servlet组件就是由Tomcat容器创建的对象,并由Tomcat调用的其中的方法!由于类的创建、方法的调用都是由Tomcat来完成的,所以,开发人员不必关心Servlet中的方法在几点几分几秒被调用,只知道某些会在满足什么条件时被调用,并决定被调用时应该如何处理数据,所以,在开发Servlet时,开发人员只需要重写对应的方法即可!总的来说,在讨论生命周期问题时,特定的组件(某些类)的创建过程、销毁过程,及其中某些方法的调用的主动权都不在开发人员手里,而是由某些容器进行管理的,开发人员就不必关心方法的调用时间,只需要关心特定的方法在哪种情景下会被调用,从而决定被调用时应该做哪些事情!生命周期在管理对象中的表现就是一个个的方法,在学习生命周期时,一定要了解这些方法在什么情景下被调用、调用多少次!

所以:

Servlet的生命周期

1、web容器加载servlet,servlet实例化,生命周期开始。

2、通过调用servlet的init()方法进行servlet的初始化。

3、通过调用 service()方法实现,根据请求的不同调用不同的doGet()或者doPost()方法。

4、结束服务,web容器调用servlet的destroy()方法。

在接触Spring时,可以发现,所编写的类如果交给Spring来管理,那么由何时创建对象、何时销毁对象也不由开发人员来管理了!如果开发人员需要在整个对象的管理过程中添加一些管理方法,例如“在销毁之前释放某些资源”,则可以在类中添加创建和销毁时的生命周期方法,例如:

package cn.tedu.spring;
public class User {
	public User() {
		System.out.println("创建了User类的对象!!!");
	}
	
	// 生命周期方法:初始化时执行的方法
	// 方法的声明:自定义名称,空参数列表。建议:public void。
    //由于是Spring框架调用方法,所以无法识别参数和返回值。而权限最好是public。
	public void init() {
		System.out.println("User.init()");
	}
	
	// 生命周期方法:销毁之前执行的方法
	public void destroy() {(dis 赵 诶)
		System.out.println("User.destroy()");
	}

}

然后,还需要在Spring的配置文件中进行配置:

(在安卓里面,方法名称一般通用为:onCreate和onDestroy)

<!-- init-method:初始化方法的名称,应与User类里初始化方法的自定义的名称相一致 -->
<!-- destroy-method:销毁方法的名称,应与User类里销毁方法的自定义的名称相一致 -->
<bean id="user" class="cn.tedu.spring.User"
		init-method="init" destroy-method="destroy">
</bean>

当运行时,可以发现:在执行了构造方法之后,就会自动调用初始化方法,在最终释放资源之前,就会执行销毁方法!顺序是:构造方法——初始化方法——销毁方法——释放资源。

当编写了某个类由交Spring管理后,并不是必须声明并配置生命周期方法,仅在有需要的时候添加方法并配置即可,也不一定需要同时添加初始化和销毁这2个方法,完全可以只添加并配置其中的某1个,按需使用即可

(生命周期的方法,在绝大多数时候,的确不需要用。)

posted @ 2022-02-15 14:15  Charles博客  阅读(71)  评论(0编辑  收藏  举报