Java-Spring-IoC容器实例

时间:2020-02-23 14:37:16  来源:igfitidea点击:

简而言之,IoC容器负责实例化/创建和配置对象,并组装对象之间的依赖关系。

你可能会想。。IoC容器是如何接收到上述数据的呢?答案来自3个地方:xmlfle、Java代码或者Java注释。

IoC容器是Spring中的一个框架,它管理POJO(普通的旧Java对象)的生命周期,并在需要时将它们插入Java程序中。

一般来说,Java对象有两种声明依赖关系的方法:

通过将它们作为参数传递给构造函数

通过将它们作为参数传递给对象的setter方法

有两个包是Spring的IoC容器的基础: **org.springframework.beans)和 org.springframework.context.

BeanFactory接口管理许多bean,同时,这些bean之间有依赖关系。它提供了基本功能,更重要的是,它提供了BeanFactory的子接口 ApplicationContext。当应用程序运行时,它是只读的,如果实现允许它并且它管理bean的生命周期,可以重新加载它。

此时,依赖关系不是由Java对象管理的,而是由框架管理的。有一个 反转*(如果你知道我的意思的话)。

配置元数据是指与我在本教程开头提到的任务相关的指令的术语——对象的实例化、配置和组装。

从上面的示例中可以看到,重要的是配置元数据(对象的实例化、配置和组装),jovo被传递到IOC容器(很可能是ApplicationContext的一个实例)。

如何实例化ApplicationContext

ApplicationContext context = new ClassPathXmlApplicationContext("services.xml");

也可以将ApplicationContext看作是简单的配置。它从XML文件或者注释加载“配置”。需要在应用程序开始时创建ApplicationContext,以便它读取应用程序需要读取的所有内容。

以防万一,应用程序中可以有许多ApplicationContexts。我们甚至可以让它们从同一个配置文件中读取。这是个好做法吗?取决于你想达到什么目标。大多数人建议在一个地方(通过XML或者其他方式)配置所有bean,并由单个应用程序上下文加载。

下面的示例取自Spring的原始文档,请随时查看它以深入了解Spring。

服务.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans.xsd">

<!-- services -->

<bean id="petStore"
      class="org.springframework.samples.jpetstore.services.PetStoreServiceImpl">
  <property name="accountDao" ref="accountDao"
  <property name="itemDao" ref="itemDao"
  <!-- additional collaborators and configuration for this bean go here -->
</bean>

<!-- more bean definitions for services go here -->

</beans>

再一次,你可以想到服务.xml作为一个配置文件, 应用程序上下文正在加载/读取它。