Spring(IOC/DI入门)

一、概述

IOC:控制反转,以前对象需要自己new进行创建,现在把对象创建的操作交给了spring框架,用的时候直接找框架要即可;spring负责所有的对象和管理,称之为IOC容器。

DI:依赖注入,一个A类需要执行B类中的方法,那就是A类依赖B类,如果A类要正常运行,需要注入B类的对象;这就是依赖注入;spring框架进行自动注入对象,默认使用的是setter方法。

二、IOC的入门

1、创建项目,导入spring所需的jar包

 如下图所示:

2、创建接口类

2.1、dao层

 BookDao接口代码如下:

public interface BookDao {
    public void save();
}

BookDaoIMpl类代码如下:

public class BookDaoImpl implements BookDao{

    @Override
    public void save() {
        System.out.println("BookDaoImpl...save");
    }
}

2.2、service层 

BookService接口代码如下:

public class BookDaoImpl implements BookDao{
    @Override
    public void save() {
        System.out.println("BookDaoImpl...save");
    }
}
BookServiceImpl类代码如下:
public class BookServiceImpl implements BookService {
    //BookServiceImpl依赖BookDao的对象
    BookDao bookDao;
    //setBookDao如果没有这个方法,框架就不能自动注入
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

    @Override
    public void save() {
        System.out.println("BookServiceImpl...save");
        bookDao.save();
    }
}
BookServiceVip类代码如下:
public class BookServiceVip implements BookService {
    //BookServiceVip依赖BookDao的对象
    BookDao bookDao;
    //setBookDao如果没有这个方法,框架就不能自动注入
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

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

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

3.1、创建spring的核心配置文件

<?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框架,创建管理哪些对象
          id: 给创建出来的对象起个名字
          class: 要创建对象对应类的全类名
    -->
    <!-- 实现BookServiceImpl依赖注入bookDao -->
    <bean id="bookDao" class="com.dou.dao.impl.BookDaoImpl"/>
    <bean id="bookService" class="com.dou.service.impl.BookServiceImpl">
        <!-- 通过property给类的属性进行注入数据
              常规类型使用value注入;
              对象使用tef引用上面定义的;-->
        <property name="bookDao" ref="bookDao"/>
    </bean>
</beans>

3.2、依赖注入

依赖注入在 BookServiceImpl 和 BookServiceVip 已经写了有注释,通过setting方法使它们变成自动注入

如图下所示:

 

 4、测试

测试分为三步:

1. 获取IOC容器

2. 从容器中获取BookService对象

3. 执行方法

示例代码如下:

public class Test01 {
    BookService bookService;
    @Test
    public void test01(){
        //对象创建由spring框架创建,此处只需要问IOC容器要
        //1、通过 ClassPathXmlApplicationContext加载spring.xml获得IOC容器
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        //2、从IOC容器中根据名字获取对象
        bookService = (BookService) classPathXmlApplicationContext.getBean("bookService");
        //3.执行方法
        bookService.save();
    }
}

猜你喜欢

转载自blog.csdn.net/m0_71385552/article/details/129756580