Di : Dependency Injection 依赖注入
依赖:一个对象需要使用另一个对象
注入:通过setter方法进行另一个对象实例设置。
class BookServiceImpl{
//之前开发:接口 = 实现类 (service和dao耦合)
//private BookDao bookDao = new BookDaoImpl();
//spring之后 (解耦:service实现类使用dao接口,不知道具体的实现类)
private BookDao bookDao;
setter方法
}
模拟spring执行过程
创建service实例:BookService bookService = new BookServiceImpl() -->IoC
创建dao实例:BookDao bookDao = new BookDaoImple() -->IoC
将dao设置给service:bookService.setBookDao(bookDao); -->DI
创建UserService接口和实现类
创建UserDao接口和实现类
public interface BookDao {
public void addBook();
}
public class BookDaoImpl implements BookDao {
@Override
public void addBook() {
System.out.println("di add book");
}
}
public class UserServiceImpl implements UserService {
// 方式1:之前,接口=实现类
// private BookDao bookDao = new BookDaoImpl();
// 方式2:接口 + setter
private UserDao userdao;
public void setUserdao(UserDao userdao) {
this.userdao = userdao;
}
@Test
public void addUser() {
this.userdao.addUser();
}
}
配置文件
测试