深入Spring专题(19)

92 阅读2分钟

这是我参与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,因为这会导致应用产生各种问题。