DI入门案例

DI入门案例

思路分析

  1. 基于IoC管理bean
  2. Service中使用new形式创建的Dao对象是否保留?(否)
  3. Service中需要的Dao对象如何进入到Service?(提供方法)
  4. Service与Dao间的关系如何描述?(配置)

DI入门案例(XML版)

  1. 删除使用new的形式创建对象的代码

  2. 提供依赖对象对应的setter方法

    public class BookServiceImpl implements BookService {
        // 5. 删除业务层中使用new的方式创建的dao对象
        //private BookDao bookDao = new BookDaoImpl();
        private BookDao bookDao;
    
        @Override
        public void save(){
            System.out.println("book service save...");
            bookDao.save();
        }
    
        // 6. 提供对象的set方法
        public void setBookDao(BookDao bookDao) {
            this.bookDao = bookDao;
        }
    }
    
  3. 配置service与dao之间的关系对应关系说明

    <?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">
        <!--1.导入spring的坐标spring-context, 对应版本是5.2.10.RELEASE-->
        <!--2.配置bean-->
        <!--bean标签表示配置bean
        id属性表示给bean起名字
        class属性表示给bean定义类型-->
        <bean id="bookDao" class="com.charley.dao.impl.BookDaoImpl"/>
        <bean id="bookService" class="com.charley.service.impl.BookServiceImpl">
            <!--7. 配置service与dao的关系-->
            <!--property标签表示配置当前bean的属性
            name属性表示配置哪一个具体的属性
            ref属性表示参照哪一个bean-->
            <property name="bookDao" ref="bookDao"/>
        </bean>
    </beans>