IOC和DI入门案例

●简化开发

。==IOC(反转控制)==把之前new对象交给容器提供外部的对象

。==AOP(面向切面编程)==不改变原有的设计或功能添加别的功能

建立如图的文件夹

【第一步】导入Spring坐标

在pom.xml文件中配置

第三方的入,由Spring提供,想用的时候,程序代码直接拿来使用

 <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.0.3</version>
        </dependency>

【第二步】定义Spring管理的类(接口)

在dao文件中建立接口,在Impl建立其接口的实现类

接口:

public interface Orderdao {
    public void save();
}

实现类:

public class OrderDaoImpl implements Orderdao {
      @Override
      public void save() {
            System.out.println(" order里边的save方法正在运行。。。");
      }
}

【第三步】创建Spring配置文件,配置对应类作为Spring

进行配置下xml文件,定义其中的bean的属性

  <bean id="orderDao"  name="dao dao2 dao3" class=" com.by.dao.impl.OrderDaoImpl"></bean>

管理的bean对象 【第四步】初始化IOC容器(Spring核心容器/Spring容 器),通过容器获取bean对象

public class Springtest {
    @Test
    public void test01() { 
        //创建IOC容器,加载spring的核心文件 固定的用法
        ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml");

        //写的是设置的bean中的id名
        //从IOC容器中获取Bean对象
        //固定用法
        //用的是接口名称,只能使用接口名称
        Orderdao orderdao = (Orderdao) ac.getBean("orderDao");
        //输出的是最后调用save的地方
        System.out.println(orderdao);
        //调用bean对象,就是将定义的类里边的结果进行输出
        orderdao.save();
        OrderService orderService =(OrderService) ac.getBean("OrderService");
        System.out.println(orderService);
        orderService.save();

    }

DI(依赖注入)

他是spring核心IOC的具体体现,通俗来讲就是让Spring来维护业务层和持久层的关系。

降低耦合度

让Spring知道ordersevice和dao的关系

public class OrderServiceImpl implements OrderService {
    private Orderdao orderdao;//删除new对象 目的是降低耦合度

    //好像是将dao和service进行连接
    //提供依赖的setter方法
    //setter注入
    //让Spring知道ordersevice和dao的关系
    public void setOrderdao(Orderdao orderdao) {
        this.orderdao = orderdao;
    }

    @Override
    public void save() {
        System.out.println("OrderService  save 方法初始化。。。。。。 OrderService");
    }
}

application中设置

 <bean id = "OrderService" class="com.by.service.OrderServiceImpl">
        <!--
        配置service和dao的关系
        name 要写接口的名字 这个名字在哪里呢?
        降低耦合的引用注入名字 或者是set出的默认项的名字
        ref  外引用  是引用外部id的名字
        property 配置当前bean标签的属性
        -->
        <property name="orderdao" ref="orderDao"/>

    </bean>

进行测试方法的输出

ublic class Springtest {
    @Test
    public void test01() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("application.xml");
        Orderdao orderdao = (Orderdao) ac.getBean("orderDao");   
        System.out.println(orderdao);
        orderdao.save();
        OrderService orderService =(OrderService) ac.getBean("OrderService");
        System.out.println(orderService);
        orderService.save();
    }
}

输出的结果:

一般使用注解代替xml文件的配置

耦合问题

事物和日志操作

不用手动new对象,通过第三方根据要求提供需要的bean对象的代理对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值