这是我参与2022首次更文挑战的第26天,活动详情查看2022首次更文挑战
实现bean作用域
除单例和原型作用域外,当需要为更特定的目的而定义Spring bean时,还可以使用其他作用域,也可实现自己的自定义作用域,并在Spring的ApplilcationContext中注册它,Spring从版本4起支持以下Bean作用域:
- 单例作用域:默认为单例作用域。每个SpringIoC容器只会创建一个对象。
- 原型作用域:当应用程序请求时,Spring将创建一个新实例。
- 请求作用域:用于Web应用程序。当为Web应用程序使用SpringMVC时,首先针对每个HTTP请求实例化带有请求作用域的bean,然后再请求完成时销毁。
- 会话作用域:用于Web应用程序。当为Web应用程序使用SpringMVC时,首先针对每个HTTP会话实例化带有会话作用域的bean,然后在会话结束时销毁。
- 全局会话作用域:用于基于Portlet的Web应用程序。带有全局会话作用域的bean可在同一个SpringMVC驱动的门户应用程序的所有Portlet之间共享。
- 线程作用域:当一个新线程请求bean实例时,Spring将创建一个新的bean实例,而对于同一线程,返回相同的bean实例。请注意线程作用域默认情况下未注册。
- 自定义作用域:可以通过实现org.springframework.beans.factory.config.Scope接口创建自定义作用域,并在Spring配置中注册自定义作用域。
解析依赖项
在正常的操作过程中,Spring可通过查看配置文件或类中的注解来解析依赖项,通过这种方式,Spring可确保每个bean都按正确的顺序进行配置,以便每个bean都具有正确配置的依赖项。如果Spring没有执行此操作,而只是创建bean并以任意顺序配置它们,那可以在依赖项之前创建并配置一个bean,因为这会导致应用产生各种问题。