Spring中基于xml的IOC解耦

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 点击跳转浏览。

IOC是什么

控制反转,顾名思义就是控制权发生反转,例如

 IUserService service = new UserService();
 IUserService service= (IUserService) BeanFactory.getBean("UserService");

上面那一段控制权是new,就是完全自主控制引用那个dao,下面那个是把控制权交给BeanFactory,由BeanFactory通过后面的字符串配置。这种控制权的转移就叫控制反转。
在这里插入图片描述

IOC能做什么

削减计算机程序的耦合(解除我们代码中的依赖关系)。并且spring中的ioc只能解决程序之间的依赖关系。其他的都做不了

Spring中基于xml的IOC解耦

在这里插入图片描述
spring context这个依赖里面其实就是Map容器里面放着Bean对象
然后我们打开之前收藏的spring fromwork
在这里插入图片描述
然后在Core里面搜索xmlns第一就是把头复制下来

<?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">
</beans>

比如我们要解决Spring中使用工厂模式解耦详解这个里面service层和dao层的耦合,我们接下来的步骤是

第一步在Beans里面配置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">
    <!--把对象的创建交给spring进行管理-->
    <!--配置唯一标记和全限定类名-->
        <bean id="userService" class="Service.IMPL.UserService"></bean>
        <bean id="userDao" class="Dao.IMPL.UserDao"></bean>
</beans>

第二步就是读取配置文件,通过id来获取Bean

package ui;
import Service.IUserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * 模拟一个表现层,用于调用业务层
 */
public class Client {

    public static void main(String[] args) {
        //1.使用 ApplicationContext 接口,就是在获取 spring 容器
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        //2.根据 bean 的 id 获取对象
        IUserService service = (IUserService) context.getBean("userService");
        service.save();
    }
}

结果运行通过
在这里插入图片描述

总结步骤

基于xml的IOC解耦的步骤是
1,创建配置文件,把要配置的beans交给Spring管理
2,使用一个对象去得到那个核心容器。这个容器是spring里面的,相当于工厂模式里面的Map容器,我们不用创建。
3,再根据配置文件的id获取bean对象。

新创建一个公众号 Rockey小何同学 想相互交流的同学可以关注一下哈! 感谢支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时间不会赖着不走

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值