Spring:IOC底层原理

本文深入探讨了IOC(控制反转)容器的底层原理,包括如何通过XML配置文件和工厂模式结合反射技术创建对象,以及IOC在Spring框架中的具体应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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包
      在这里插入图片描述
  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();

	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值