• Spring-IoC和DI


    IOC 核心概念

    在这里插入图片描述
    目标:充分解耦
    1.使用IoC容器管理bean (IoC)
    2.在IoC容器内将有依赖关系的bean进行关系绑定(DI)
    最终效果
    使用对象时不仅可以直接从IoC容器中获取,并且获取到的bean已经绑定了所有的依赖关系。

    IoC入门案例

    Step0:准备类和接口

    在这里插入图片描述
    BookDaoImpl.java

    public class BookDaoImpl implements BookDao {
        public void save() {
            System.out.println("book dao save ...");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    BookDao.java

    public interface BookDao {
        public void save();
    }
    
    • 1
    • 2
    • 3

    BookServiceImpl.java

    public class BookServiceImpl implements BookService {
        private  BookDao bookDao=new BookDaoImpl();
        public void save(){
            System.out.println("book service save .....");
            bookDao.save();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    BookService.java

    public interface BookService {
        public void save();
    }
    
    • 1
    • 2
    • 3

    APP2.java

    public class APP2 {
        public static void main(String[] args) {
            //获取IoC容器
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            //获取Bean
    //        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
    //        bookDao.save();
            BookService bookService=(BookService) ctx.getBean("bookService");
            bookService.save();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    Step1:导入Spring开发的基本包坐标

        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.2.10.RELEASE</version>
            </dependency>
        </dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    Step2:创建Spring配置文件

    在类路径下(resources)创建applicationContext.xml配置文件
    在这里插入图片描述
    在这里插入图片描述
    代码:

        <bean id="bookDao" class="com.itheima.dao.Impl.BookDaoImpl"/>
        <bean id="bookService" class="com.itheima.service.Impl.BookServiceImpl"/>
    
    • 1
    • 2

    在这里插入图片描述

    Step3:初始化IoC容器,通过容器获取Bean

    public class APP2 {
        public static void main(String[] args) {
            //获取IoC容器
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            //获取Bean
    //        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
    //        bookDao.save();
            BookService bookService=(BookService) ctx.getBean("bookService");
            bookService.save();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述
    在这里插入图片描述

    DI入门案例

    在这里插入图片描述

    Step0:删除业务层中new的方式创建的dao对象,并提供对应的set方法

    BookServiceImpl.java

    public class BookServiceImpl implements BookService {
        //删除业务层中使用new的方式创建的dao对象
    //    private  BookDao bookDao=new BookDaoImpl();
        private  BookDao bookDao;
        public void save(){
            System.out.println("book service save .....");
            bookDao.save();
        }
        //提供对应的set方法
        public void setBookDao(BookDao bookDao){
            this.bookDao=bookDao;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    Step1: 修改applicationContext.xml

    通过property建立关系

    <?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">
    <!--    配置bean-->
        <bean id="bookDao" class="com.itheima.dao.Impl.BookDaoImpl"/>
        <bean id="bookService" class="com.itheima.service.Impl.BookServiceImpl">
    <!--        配置server与dao的关系-->
    <!--        property标签表示配置当前bean的属性-->
    <!--        name属性表示配置哪一个具体的属性-->
    <!--        ref属性表示参照哪一个bean-->
            <property name="bookDao" ref="bookDao"/>
        </bean>
    
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    Step3:run APP2.java

    在这里插入图片描述

  • 相关阅读:
    java计算机毕业设计航空订票管理系统源程序+mysql+系统+lw文档+远程调试
    Flutter Event 派发
    322. 零钱兑换
    Java8的stream之groupingBy()分组排序
    医学影像后处理技术超详细收藏版(上)
    1017 Queueing at Bank
    基于Q-learning方法的地铁列车时刻表重新调度
    【Leetcode】二分查找合集
    五、域对象共享数据
    阿里妈妈API接口;item_search - 按关键字或网址搜索商品
  • 原文地址:https://blog.csdn.net/weixin_42888638/article/details/125464417