IOC容器基本原理
Posted 孤独时光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOC容器基本原理相关的知识,希望对你有一定的参考价值。
IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。应用程序无需在代码中new相关的对象,应用程序由IOC容器进行组装。
spring IOC管理的对象,我们称为bean。bean就是spring容器初始化,装配,及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别。那IOC如何实例化bean、管理bean之间的依赖关系?这些就需要配置元数据。
写个hello world(我用的是maven)
pxm.xml
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.4.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>jdom</groupId> <artifactId>jdom</artifactId> <version>1.1</version> </dependency>
helloInter.java
public interface helloInter { public void sayHello(); }
helloImpl.java
public class helloImpl implements helloInter{ public void sayHello() { // TODO Auto-generated method stub System.out.println("Hello World!!!"); } }
hello.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" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <!-- id 表示你这个组件的名字,class表示组件类 --> <bean id="hello" class="com.lj.testspring.chapter.helloImpl"></bean> </beans>
helloTest.java
import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class helloTest { @Test public void testHelloWorld() { //1、读取配置文件实例化一个IoC容器 ApplicationContext context = new ClassPathXmlApplicationContext("hello.xml"); //2、从容器中获取Bean,注意此处完全“面向接口编程,而不是面向实现” helloInter helloApi = context.getBean("hello", helloInter.class); //3、执行业务逻辑 helloApi.sayHello(); } }
运行,可以看出输出一个hello World
让我们来看下IoC容器到底是如何工作。在此我们以xml配置方式来分析一下:
一、准备配置文件:就像前边Hello World配置文件一样,在配置文件中声明Bean定义也就是为Bean配置元数据。
二、由IoC容器进行解析元数据: IoC容器的Bean Reader读取并解析配置文件,根据定义生成BeanDefinition配置元数据对象,IoC容器根据BeanDefinition进行实例化、配置及组装Bean。
三、实例化IoC容器:由客户端实例化容器,获取需要的Bean。
以上是关于IOC容器基本原理的主要内容,如果未能解决你的问题,请参考以下文章