学习Spring IoC

Posted hbnp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习Spring IoC相关的知识,希望对你有一定的参考价值。

   1:Spring IoC:

        Spring IoC是实现Object依赖关系之间松散耦合的机制。要在运行时实现对象的松散耦合和动态绑定,对象依赖项将由其他汇编器对象注入。Spring IoC容器是将依赖项注入对象并使其可供我们使用的程序。我们已经了解了如何使用Spring Dependency Injection在我们的应用程序中实现IoC。

Spring IoC容器类的一部分org.springframework.beans和org.springframework.context包。Spring IoC容器为我们提供了解耦对象依赖关系的不同方法。

BeanFactory是Spring IoC容器的根接口。ApplicationContext是接口的子接口BeanFactory,提供Spring AOP功能,i18n等。

 

一些有用的子接口ApplicationContext是ConfigurableApplicationContext和WebApplicationContext。Spring Framework提供了许多有用的ApplicationContext实现类,我们可以使用它们来获取spring上下文,然后是Spring Bean。

 

 

2:我们使用的一些有用的ApplicationContext实现是;

      AnnotationConfigApplicationContext:如果我们在独立的Java应用程序中使用Spring并使用Configuration的注释,那么我们可以使用它来初始化容器并获取bean对象。
ClassPathXmlApplicationContext:如果我们在独立应用程序中有spring bean配置xml文件,那么我们可以使用这个类来加载文件并获取容器对象。
FileSystemXmlApplicationContext:这类似于ClassPathXmlApplicationContext,除了可以从文件系统中的任何位置加载xml配置文件。
Web应用程序的AnnotationConfigWebApplicationContext和XmlWebApplicationContext。
通常,如果您正在使用Spring MVC应用程序并且您的应用程序配置为使用Spring Framework,则Spring IoC容器会在应用程序启动时初始化,并且在请求Bean时,会自动注入依赖项。

但是,对于独立应用程序,您需要在应用程序中的某个位置初始化容器,然后使用它来获取spring bean。


Spring Bean并不特别,我们通过Spring容器初始化的Spring框架中的任何对象都称为Spring Bean。任何普通的Java POJO类都可以是Spring Bean,如果它被配置为通过容器通过提供配置元数据信息来初始化。


3:Spring Bean Scopes
为Spring Beans定义了五个范围。

singleton - 只为每个容器创建一个bean实例。这是spring bean的默认范围。使用此范围时,请确保bean没有共享实例变量,否则可能导致数据不一致问题。
prototype - 每次请求bean时都会创建一个新实例。
请求 - 这与原型范围相同,但它意味着用于Web应用程序。将为每个HTTP请求创建一个新的bean实例。
session - 将为容器的每个HTTP会话创建一个新bean。
global-session - 用于为Portlet应用程序创建全局会话Bean。
Spring Framework是可扩展的,我们也可以创建自己的范围。但是,大多数情况下,我们对框架提供的范围很好。


4:Spring Bean配置
Spring Framework提供了三种配置应用程序中使用的bean的方法。

基于注释的配置 - 使用@Service或@Component注释。可以使用@Scope注释提供范围详细信息。
基于XML的配置 - 通过创建Spring配置XML文件来配置bean。如果您使用的是Spring MVC框架,则可以通过在web.xml文件中编写一些样板代码来自动加载基于xml的配置。
基于Java的配置 - 从Spring 3.0开始,我们可以使用java程序配置Spring bean。用于基于Java的配置的一些重要注释是@Configuration,@ ComponentScan和@Bean。

Spring IoC和Spring Bean示例项目
让我们看一下Spring IoC容器和Spring Bean配置的不同方面,以及一个简单的Spring项目。

在我的例子中,我在Spring Tool Suite中创建了一个Spring MVC项目。如果您不熟悉Spring Tool Suite和Spring MVC,请阅读Spring Tool Suite的Spring MVC Tutorial。

最终的项目结构如下图所示。
技术图片

 

 

基于XML的Spring Bean配置

MyBean是一个简单的Java POJO类。

技术图片

 

 

Spring配置XML文件

servlet-context.xml代码:

技术图片

 

 

基于注释的Spring Bean配置

技术图片

 

 

Spring IoC控制器类

HomeController类将处理应用程序主页的HTTP请求。我们将通过WebApplicationContext容器将Spring bean注入此控制器类

技术图片技术图片

 

 

 

部署描述符

我们需要为Spring Framework配置我们的应用程序,以便加载配置元数据并初始化上下文。

技术图片

 

 

 

 

 

 

以上是关于学习Spring IoC的主要内容,如果未能解决你的问题,请参考以下文章

2019.12.02——Spring学习(ioc)

Spring学习3—控制反转(IOC)Spring依赖注入(DI)和控制反转(IOC)

Spring5学习笔记 — “Spring IOC(控制反转)”

Spring学习笔记 IOC

spring学习 ———— IOC讲解

Spring框架学习-Spring和IOC概述