声明:本站文章均为作者个人原创,图片均为实际截图。如有需要请收藏网站,禁止转载,谢谢配合!!!

DI (Dependency Injection):依赖注入是指在 Spring IOC 容器创建对象的过程中,将所依赖的对象通过配置进行注入。我们可以通过依赖注入的方式来降低对象间的耦合度。

在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使对象之间的耦合越小越好。

1.导入spring坐标

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

2.新建 BookDao 及实现类

BookDao

public interface BookDao {
    public void save();
}

BookDaoImpl

public class BookDaoImpl implements BookDao {
    @Override
    public void save() {
        System.out.println("book dao -- save");

    }
}

3.新建 BookService 及实现类

BookService

public interface BookService {
    public void save();
}

BookServiceImpl

public class BookServiceImpl implements BookService {
    @Override
    public void save() {
        System.out.println("book service -- save");

    }
}

4.在 applicationContext.xml 配置文件中绑定关系

<?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 id="bookDao" class="com.badianboke.dao.impl.BookDaoImpl"></bean>
        <bean id="bookService" class="com.badianboke.service.impl.BookServiceImpl">
            <property name="bookDao" ref="bookDao"></property>
    </bean>

</beans>

5.使用

提供set方法使用

public class BookServiceImpl implements BookService {
    //private BookDao bookDao = new BookDaoImpl();
    private BookDao bookDao;

    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

    @Override
    public void save() {
        System.out.println("book service -- save");
        bookDao.save();
    }
}

6.启动类

 public static void main(String[] args){
     ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
     BookService bookService = (BookService) ctx.getBean("bookService");
     bookService.save();
}