• 【Spring】Spring中的DI(依赖注入)Dependence Import


    在这里插入图片描述
    由之前的IoC可以知道,我们写在具体对象后面的new方法肯定不能要了,这时候就要通过依赖注入的形式将Dao配置到Service中
    Dependence Import的步骤如下:
    1. 在Service类中给Dao提供setter方法

    原本我们是直接给bookDao new了一个对象

    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
    • 8
    • 9
    • 10

    修改如下,给bookDao设置一个set方法(在IDEA中在bookDao上按Alt+Insert可以快速生成set方法)

    public class BookServiceImpl implements BookService {
    	// 第一步:删除原本的new方法,给bookDao设置一个setter方法
        public void setBookDao(BookDao bookDao) {
            this.bookDao = bookDao;
        }
    
        private BookDao bookDao;
    
        public void save(){
            System.out.println("book service save...");
            bookDao.save();
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    1. 因为我们是在BookServiceImpl中使用到了bookDao这个对象,我们要使用bookDao的bean来对这个对象做初始化,所以我们在Spring config文件下做配置
    
    <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 id="bookDao" class="com.example.demo231116.dao.impl.BookDaoImpl" />
    
        <bean id="bookService" class="com.example.demo231116.service.impl.BookServiceImpl">
    
    
    
    
            <property name="bookDao" ref="bookDao"/>
        bean>
    beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    我们要在bookService中配置bookDao这个对象(name),参考的是id为bookDao的bean(ref)。
    结果如下:
    在这里插入图片描述
    ######################
    完整代码:

    在这里插入图片描述
    BookDao.java:

    package com.example.demo231116.dao;
    
    public interface BookDao {
        void save();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    BookDaoImplt.java:

    package com.example.demo231116.dao.impl;
    
    import com.example.demo231116.dao.BookDao;
    
    public class BookDaoImpl implements BookDao {
        public void save(){
            System.out.println("book dao save...");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    BookService.java:

    package com.example.demo231116.service;
    
    public interface BookService {
        void save();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    BookServiceImplt.java:

    package com.example.demo231116.service.impl;
    
    import com.example.demo231116.dao.BookDao;
    import com.example.demo231116.dao.impl.BookDaoImpl;
    import com.example.demo231116.service.BookService;
    
    public class BookServiceImpl implements BookService {
    
        // 5. 删除使用new建立对象,
        // 6. 同时建立set方法
        public void setBookDao(BookDao bookDao) {
            this.bookDao = bookDao;
        }
    
        private BookDao bookDao;
    
        public void save(){
            System.out.println("book service save...");
            bookDao.save();
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    Deomo231116Application.java:

    package com.example.demo231116;
    
    import com.example.demo231116.service.BookService;
    import com.example.demo231116.service.impl.BookServiceImpl;
    
    public class Demo231116Application {
    
        public static void main(String[] args) {
            BookService bookService = new BookServiceImpl();
            bookService.save();
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    applicationcontext.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">
        
    
        
        
        <bean id="bookDao" class="com.example.demo231116.dao.impl.BookDaoImpl" />
    
        <bean id="bookService" class="com.example.demo231116.service.impl.BookServiceImpl">
    
    
    
    
            <property name="bookDao" ref="bookDao"/>
        bean>
    beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 相关阅读:
    重载和重写的区别
    【微服务设计】第一篇:什么是微服务
    CSS选择器十二种方法
    13. Python数据类型之布尔类型
    信安软考——第六章 认证技术原理和应用 笔记记录
    对话四代女程序员:技术浪潮之下的“取与舍”|开谈
    HotSpot 为什么要分为新生代和老年代?
    windows离线部署VSCode在Centos7上的远程开发环境
    MybatisPlus
    经纬恒润AUTOSAR全面适配芯驰车规芯片,联合打造全场景国产解决方案
  • 原文地址:https://blog.csdn.net/passer__jw767/article/details/134450135