对IOC的理解:这是一种设计思想,目的为了降低类与类之间的耦合度。IOC也叫“”控制反转“”,所以理解他从两方面:
1.控制(谁控制谁,控制什么)
--首先控制是容器控制了对象。控制了外部资源获取(资源不只是对象还有文件等)
2.反转(什么是反转)
--在本来的程序设计上,我们都会再类中设计对象,都是我们主动创建对象或者直接通过对象进行获取东西,这就相当于是正转。而当从IOC的设计角度来思考,当容器帮我们创建对象及注入时依赖对象,此时对象是一个被动依赖的关系,所以是反转。
1.IOC底层原理使用技术
(1)xml配置文件
(2)dom4j解析配置的xml文件
(3)工厂的设计模式
(4)反射
2.图解:
根据图中的思路见代码(当然创建项目目录要注意xml文件是在src下的,下面有项目目录截图):
下面是一个类:
package cn.itcast.ioc;
public class User {
public void add(){
System.out.println("add.........");
}
}
第一步:配置bean文件,创建想创建的类,也就是上面的类。
<?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">
<!-- IOC的入门 -->
<bean id="userservice" class="cn.itcast.ioc.User"></bean>
</beans>
第二步 :首先创建一个工厂类,然后通过doc4j解析xml文件,最后通过反射来创建对象。
package cn.itcast.ioc;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class TestIoc {
public static void main(String[] args) {
BeanFactory factory = new XmlBeanFactory(
new ClassPathResource("beans01.xml"));
User user = (User)factory.getBean("userservice");
System.out.println(user);
user.add();
}
}
项目目录以及所需要的jar包截图: