本篇博客主要介绍Java中的IOC和DI,以及在String框架中的应用。首先,我们将对IOC和DI进行概念介绍,然后讲解它们的关系及在String框架中的应用,最后通过一个实例来展示它们的具体用法。

IOC和DI的概念介绍

  • IOC(Inverse of Control)即控制反转,它将对象的创建和依赖注入的过程由程序员手动控制转化为由容器自动创建和注入。
  • DI(Dependency Injection)即依赖注入,它是IOC的一种实现方式,通过容器自动将所需的依赖注入到需要它们的对象中,从而实现对象之间的解耦。

IOC和DI的关系及在Spring框架中的应用

  • IOC和DI是紧密相关的,IOC通过将对象的创建和依赖注入的控制权交给容器,实现了依赖注入。
  • Spring框架是一个轻量级的IOC容器,通过使用DI实现对象之间的解耦,从而使应用程序更加灵活、可扩展、易维护。
  • 在Spring框架中,容器会自动管理对象之间的依赖关系,从而实现了依赖注入。Spring提供了多种方式来进行依赖注入,包括构造器注入、Setter注入、字段注入等。

示例代码

我们可以通过一个实例来展示IOC和DI的具体用法。假设我们有一个UserService和一个UserRepository,UserService需要依赖UserRepository来完成其业务逻辑,我们可以使用Spring的依赖注入来实现它们之间的解耦。

1.创建项目,导入spring的jar包

 2.按照如下目录结构创建接口及其实现类,做好准备工作

 servlet层

public class BookServlet {
    BookService bookService;
    @Test
    public void add() {
        System.out.println("BookServlet...add");
        bookService.save();
    }
}

service层

//接口
public interface BookService {
    void save();
}
//实现类
public class BookServiceImpl implements BookService {
    private BookDao bookDao;
    private String name;

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

    public void setName(String name) {
        this.name = name;
    }
    @Override
    public void save() {
        System.out.println("BookServiceImpl...save");
        bookDao.insert();
    }
}

dao层

//接口
public interface BookDao {
    public void insert();
}
//实现类
public class BookDaoImpl implements BookDao {
    @Override
    public void insert() {
        System.out.println("BookDaoImpl...save");
    }
}

3.使用spring完成IOC的配置和DI依赖注入

<?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">
    <!--把所有对象创建到spring的IOC容器中,并起上名字
        id:表示给对象起名字
        class:类的全类名
    -->
<bean id="bookDao" class="com.chen.dao.impl.BookDaoImpl"></bean>

<bean id="bookService" class="com.chen.service.impl.BookServiceImpl">
    <!--spring的依赖注入:property表示BookServiceImpl的属性,常规属性使用value赋值,
类型属性使用ref引用-->
        <property name="name" value="张三"/>
        <property name="bookDao" ref="bookDao"/>
    </bean>
</beans>

注意:BookServiceImpl需要给bookDao属性设置setter方法,框架才能自动注入

运行结果如下:

总结

        IoC和DI是Spring框架的核心概念,它们可以帮助我们管理对象的生命周期和依赖关系。Spring框架提供了强大的IoC容器和DI机制,可以帮助我们更轻松地开发Java应用程序。在本篇博客中,我们介绍了IoC和DI的概念,以及如何在Java应用程序中使用Spring框架实现它们。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐