聊聊Spring中的IOC操作

一、定义

什么是IOC? IOC是指把对象的创建交给Spring来管理的方式。它有两种方式:一种是配置文件;另一种是注解。

二、IOC底层原理

IOC的实现主要依赖于下面四种技术:
1)XML配置文件
2)dom4j解析XML
3)工厂设计模式
4)反射

下面讲解一下IOC的演变过程。

stage1(原始方式)

//现在有一个类及类方法
public class User {
    public void add() {
        ...
    }
}

//现在要在Servlet里调用类里面的方法
User user = new User();
user.add();

缺点: 耦合度太高,类或者方法一旦有所改变,需要改动Servlet里面的多处代码

stage2(使用工厂类)

public class UserService {
    public void add() {
        ...
    }
}

//创建工厂类
public class Factory {
    public static UserService getService() {
        return new UserService();
    }
}

//调用
public class UserServlet() {
    UserService s = Factory.getService();
    s.add();
}

缺点: Servlet与Factory仍旧有一定耦合性

stage3(IOC解决方式)

1)第一步。创建配置文件

<bean id="userService" class="cn/.../UserService"/>

class属性表示类的全路径

2)第二步。创建工厂类,使用dom4j解析配置文件

public class UserFactory(){
    public static UserService getService(){
        // 1.使用dom4j解析配置文件,根据id值得到对应的class属性值
        String classValue = "class属性值";
        
        // 2.使用反射创建类对象
        class clazz = class.forName(classValue);
        UserService service = clazz.newInstance();
        
        return service;  
    } 
}

优点: 如果类发生变化,只需要修改配置文件

三、使用举例

在Spring中使用IOC可以分为以下四步。

stage1:导入jar包

1)解压spring-framework的zip文件,在bin目录下,每个jar包都有三个文件,分别是jar包、文档和源代码;
2)使用spring最基本的功能,只需导入beans、core、context、expression四个最核心的jar包就可以了;
3)导入支持日志输出的jar包,如logging、log4j等。

stage2:创建类并在类里面创建方法

package cn.itcast.ioc;

public class User {
    public void add(){
        System.out.println("add...");
    }
}

stage3:创建配置文件并配置创建类

1)spring核心配置文件的名称和位置不是固定的。建议放到src下面,官方建议名称为applicationContext.xml;
2)引入schema约束。对于4.x版本的spring来说:

  • 找到docs/spring-framework-reference/html下面的最后一个文件
  • 用浏览器打开这个文件,找到文件末尾一段代码。复制前半部分到xml文件,这就叫做引入约束
<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">

3)配置对象创建

<bean id="user"  class="cn.itcast.ioc.User"></bean>

stage4:测试

public class TestIOC{
    public void testUser(){
        // 1.加载spring配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");

        // 2.得到配置创建的对象
        User user = (User)context.getBean("user");
        ...
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值