Spring & Spring MVC 3. Spring Bean 作用域 & 生命周期

一、Spring Bean 作用域

当我们在 Spring 中定义了一个 Bean 之后,必须给我们的 Bean 定义一个作用域。

当然啊,我们之前弄得内个 HelloWorld 的时候,貌似并没有给这个 Spring 定义作用域。其实不然,Spring 其实默认给与了 Bean 一个作用域,就是:singleton。

这时候有人会问了,这个作用域有啥用?

这里我们需要知道一下 Spring 的作用域有那些,分别代表的是什么意思。

Spring 一共有五种作用域,每个作用域有不同的功能,默认的 singleton 可以说就是全局唯一,Bean 以单例的方式存在。

如果我们需要每次都从容器中从新生成一个 Bean,那么我们就需要给这个 Bean 的作用域配置成 prototype。

这里我还要说一句,我们常用的一般只有这两个,其他的了解即可~~~

接下来我们来使用一下,感受感受这两个作用域。

1. singleton

我们创建一个 Singleton 的类,并在类中定义一个 msg 的属性,顺便写上 get、set 方法。

然后我们再配置一下 beans.xml 这个文件。

当然啊,这个 scope 我们可以写可以不写,不写的话,Spring 会帮我们默认成 singleton,我们为了学习,就先写上。

接着写一个测试类。

很简单的一个测试类啊,我们就看看最后两个 Bean 能不能都输出 aaa 这个东西。运行一下~

是 ok 的啊。

2. prototype

这个 prototype 作用域是原型类型,它在我们创建容器的时候并没有实例化,而是当我们获取bean的时候才会去创建一个对象,而且我们每次获取到的对象都不是同一个对象。

我们其实还是使用上面的那个例子,然后,我们只需要修改一下作用域,然后直接测试即可,其他的不需要动。

接着来测试

是不是啊,我们就获取不到 null 了。

二、Spring Bean 的生命周期

其实 Bean 的生命周期和这个 Servlet 很类似。

Bean的生命周期可以表达为:Bean的定义——Bean的初始化——Bean的使用——Bean的销毁

当然啊,有一些在 Bean 实例化和销毁之间发生的活动,但是本章将只讨论两个重要的生命周期回调方法,它们在 bean 的初始化和销毁的时候是必需的。

初始化回调

初始化回调可以通过实现接口或者是通过配置进行回调,我们来介绍一下这两种方法。

1. 接口回调

接口回调,需要我们实现 InitializingBean 这个接口,下面我们创建一个 Bean,然后实现这个接口。

自己配置一下 Bean,然后我们来测试一下这个方法

可以看到,我们是先执行回调之后,然后才去执行 say 方法。

2. 配置回调

配置回调我们可以不去实现接口,通过在 bean.xml 配置来实现回调

然后再来运行测试方法。

是没有问题的。

销毁回调

同样啊,销毁回调也有两种方法,实现接口或者配置

1. 实现接口

销毁的回调接口是 DisposableBean

其他的不变,我们这次修改一下测试代码,我们添加一个方法调用

这里还需要注意的是,我们需要将之前的 ApplicationContext 修改成 AbstractApplicationContext。

然后我们测试

也是没有问题的啊。

2. 配置实现

同样需要配置到 bean.xml 中,属性是 destroy-method。

再来测试一下

好了,这一篇就先到这里,先看着,慢慢消化。

各位,还有一件事,我的官网要准备从新制作,有没有什么好的提议,用什么框架,有什么功能,欢迎各位小伙伴提供~~~(直接评论在评论区即可,我到时候会整理起来)

猜你喜欢

转载自blog.csdn.net/weixin_45908370/article/details/114677709
今日推荐