欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring:IOC底层原理

程序员文章站 2022-03-03 12:33:18
...

IOC操作

  1. 实质:把对象的创建交给spring来管理
  2. IOC操作:
    • 文件配置方式
    • 注解方式
  3. IOC底层原理:
    • xml配置文件:配置要创建对象类
    • dom4j解析配置文件
    • 工厂设计模式
    • 反射:创建类的对象

IOC底层原理:

  1. 最底层:
    缺陷:耦合度太高
   public class User(){add();}
   //在service中调用add()方法
   User user=new User();
   user.add();
  1. 工厂模式:
   public class UserService{public void add()};
   //创建工厂类
   public class Factory{ getService(){return new UserService();}}
   目的:UserServlet要得到一个User对象
   public class UserServlet{UserService s=Factory.getService();}
  1. IOC原理:
    目的:得到UserService对象
    好处:以后只用修改xml文件
    具体做法:
    1. 创建xml文件
<bean id="user" class="cn.itclass.ioc.User"></bean>
  1. 创建工厂类:使用dom4j解析配置文件+反射
    1. 使用dom4j解析xml文件
    根据id值user,得到id对应的class属性的值
    String classValue=“class属性值”;
    2. 使用反射创建类对象
    String cla=Class.forName(classValue); //类
    UserService service=cla.newInstance(); //创建类的对象
    //返回对象
    return service;

IOC使用案例:

  1. 导入jar包

    • beans context core expression 基本核心包
    • log4j:支持日志输出的jar包
      Spring:IOC底层原理
  2. 创建类,在类里面创建方法

  3. 创建spring配置文件,配置创建类

  4. 写代码测试对象创建

    以下是配置文件中的内容:

    • 配置文件中引入schema约束
    • 配置文件已经封装好,可以直接得到对象
    • spring核心配置文件名称和位置不是固定的
      建议放到src下面,官方建议applicationContext.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">
             
             <!-- IOC入门 -->
             <bean id="user" class="cn.itclass.ioc.User"></bean>
         
     </beans>
 测试用例:
	@Test 
	public  void testUser () {
		//1. 这一步作用:加载配置文件,根据配置文件中的内容创建好一个对象
		/*
		 * dom4j解析配置文件,但是配置文件已经封装好一个对象
		 * 这一步作用:加载配置文件,根据配置文件中的内容创建好一个对象
		 */
		ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");
		//参数是xml配置文件的地址
		
		//2.得到配置对象
		User user=(User) context.getBean("user"); //配置文件中的id值
		System.out.println(user);
		user.add();

	}
相关标签: Spring基础