Java-Spring-IoC容器实例
简而言之,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作为一个配置文件, 应用程序上下文正在加载/读取它。