Spring笔记_day1_DI(小白也能秒懂版)

一. DI Dependency Injection ,依赖注入
如何理解:
依赖:一个对象需要使用另一个对象

class B {
           private A a;    //B类依赖A类
        }

注入:通过setter方法进行另一个对象实例设置。(有好几种方法 只是用set来举例子)

例如:
	class BookServiceImpl{
        //之前开发:接口 = 实现类  (service和dao耦合)
		//private BookDao bookDao = new BookDaoImpl();
 		//spring之后 (解耦:service实现类使用dao接口,不知道具体的实现类)
		private BookDao bookDao;
		setter方法
   }

具体详细的 模拟spring执行过程:

  • 创建service实例:BookService bookService = new BookServiceImpl() -->IoC -(bean配置文件)

  • 创建dao实例:BookDao bookDao = new BookDaoImple() -->IoC
    -(bean配置文件)

  • 将dao设置给service:bookService.setBookDao(bookDao); //注入 -->DI (property配置文件)
    二.开始案例(目标类)

  • 创建BookDao接口和实现类

  • 创建BookService接口和实现类

  • 将dao和service配置 xml文件

  • 使用api测试
    1.创建BookDao接口和实现类
    BookDao接口

package com.di;

public interface BookDao {
public void addBook();
}

BookDao的实现类BookDaoImpl

package com.di;

public class BookDaoImpl implements BookDao{

	@Override
	public void addBook() {
      System.out.println("di add book");		
	}

}

2.创建BookService接口和实现类
BookService接口里面和BookDao的接口方法一样

package com.di;

public interface BookService {
public void addBook();
}

BookService的实现类BookServiceImpl

package com.di;

public class BookServiceImpl  implements BookService{
//之前  :接口  = 实现类  private BookDao bookdao = new BookDaoImpl();
    //现在spring  接口+set方法注入
	private BookDao bookDao;
	//这里提供get方法也没啥用
	public void setBookDao(BookDao bookDao) {
		this.bookDao = bookDao;
	}
//**这里特别重要 就是和 别的不同之处**
	@Override
	public void addBook() {
		this.bookDao.addBook();
	}

}

  1. 将dao和service配置 xml文件
    先将前面上一篇做的控制反转中的配置文件beans.xml复制过来进行对应的修改




 






Spring笔记_day1_DI(小白也能秒懂版)_第1张图片
4.进行测试

package com.di;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDi {
	@Test
//从spring容器中获取
	public void Test01() {
		String  xmlpath="com/di/beans.xml";   
		   ApplicationContext applicationcontext = new ClassPathXmlApplicationContext(xmlpath);
        BookService bookservice  = (BookService)applicationcontext.getBean("BookService");
        //相当于  BookService bookservice  = new BookServiceImpl();
        bookservice.addBook();
        //.先看一下bookServiceImpl发现里边有bookDaoImpl 他会继续解析这个,最后经过一大圈,就读到数据
	}
 
} 

Spring笔记_day1_DI(小白也能秒懂版)_第2张图片

你可能感兴趣的:(String框架)