文章目录
一、ioc定义
IoC对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。看过一个通俗易懂的比喻:创建对象的过程就像找女朋友,传统情况下,我们去偶遇符合自己要求的女孩,然后要联系方式,想办法认识她们,谈恋爱结婚…需要自己设计和面对每个环节。传统的程序开发也是如此,在一个对象中,如果要使用另外的对象,就必须得到它(自己New一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比如Connection等),管理对象的整个生命周期,对象始终会和其他的接口或类藕合起来
IoC是如何实现的?我和女朋友之间引入第三方:婚姻介绍所。婚介管理了人的资料,我向婚介提出一个列表,告诉它什么样什么样的要求,婚介提供一个女孩,我们只需要谈恋爱结婚。如果婚介给我们的人选不符合要求,就会抛出异常。整个过程不再由我自己控制,而是有婚介这样一个类似容器的机构来控制。Spring所倡导的开发方式就是如此,所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以叫控制反转
二、ioc实现
2.1导入jar包
4个核心(beans,context,core,expression)+1个依赖 (commons-logging)
2.2目标类
2.2.1 接口类:
public void getUserId();
2.2.2 实现类:
@Override
public void getUserId() {
// TODO Auto-generated method stub
System.out.println("print userid");
}
2.3配置文件 applicationContext.xml
2.3.1 添加schema约束
<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">
</beans>
2.3.2 添加bean信息
<bean id="userServiceId" class="cn.itcast.spring.ioc.UserServiceImpl"></bean>
2.4测试
测试代码:
@Test
public void UserIdtest() {
//获取容器
String xmlPath="cn/itcast/spring/ioc/applicationContext.xml";
ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath);
//实现方法
UserService userService=(UserService)applicationContext.getBean("userServiceId");
userService.getUserId();
}