Spring IoC与DI(依赖注入)

Spring Ioc

所谓控制反转,即将传统的需要代码进行的操作,交由Spring容器来做。下面以添加book为例进行比较一下:
BookService.java

public interface BookService {
    void addBook();
}

BookServiceImpl .java

public class BookServiceImpl implements BookService {
    @Override
    public void addBook() {
        System.out.println("add book by ioc");
    }

}

Spring 配置文件







测试:

public class TestIoc {
    
    @Test
    public void demo01(){
        //传统方法
        BookService bookService= new bookServiceImpl();
        bookService.addBook();
    }
    
    @Test
    public void demo02(){
        //从spring容器获得
        //1 获得容器
        ApplicationContext applicationContext = 
                                new ClassPathXmlApplicationContext("com/spring/ioc/beans.xml");
        
        //2获得内容 --不需要自己new,都是从spring容器获得
        BookService bookService= (BookService ) applicationContext.getBean("bookService");
        bookService.addBook();
    }

}

DI(Dependency Injection)

has a:有一个,成员变量,依赖。
class B {
private A a; //B类依赖A类
}
依赖:一个对象需要使用另一个对象
注入:通过setter方法进行另一个对象实例设置。
举例如下:

public interface BookDao {
    void save();
}
public class BookDaoImpl implements BookDao{
    @Override
    public void save(){
        System.out.println("DI -> add a book");
    }
}
public interface BookService {
    void addBook();
}
public class BookServiceImpl implements BookService {
    private BookDao bookDao;
    
    public void setBookDao(BookDao bookDao){
        this.bookDao=bookDao;
    }

    @Override
    public void addBook() {
        this.bookDao.save();
    }

}
public class TestDI {
    
    @Test
    public void demo01(){   
        String xmlPath = "com/*/spring/ioc2/beans.xml";
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
        BookService bookService = (BookService) applicationContext.getBean("bookService");
        bookService.addBook();
    }
}






    




大家有兴趣也可以关注我的公众号查看文章。

Spring IoC与DI(依赖注入)_第1张图片
更有早行人.jpg

你可能感兴趣的:(Spring IoC与DI(依赖注入))